Что нового

[Ошибки] Не работает выражение у вложенного With

alex33

Скриптер
Сообщения
1,457
Репутация
186
Object referenced outside a "With" statement.

Код:
Opt("MustDeclareVars", 1)
Local $oSC, $oUser
$oSC = ObjCreate("ScriptControl")
$oSC.Language = "JavaScript"

$oUser = $oSC.Eval('({"name":"qwe", "email":"[email protected]", "datetime":"01.01.2018 02:45", "avatar":{"width":300, height:200, "src":"images/pic.jpg"}})')

With $oUser
	MsgBox(0, "",  .name & @TAB & .email & @TAB & @CRLF )
	;~ With .avatar; ==> Object referenced outside a "With" statement.
	With $oUser.avatar
		MsgBox(0, "",  @TAB & .width & @TAB & .height & @TAB & .src & @CRLF )
	EndWith
	MsgBox(0, "",  .datetime & @CRLF )
EndWith


Теперь пробуем это же проделать в VBScript .vbs :
Код:
Dim oSC, oUser
Set oSC = CreateObject("ScriptControl")
oSC.Language = "JavaScript"

Set oUser = oSC.Eval("({""name"":""qwe"", ""email"":""[email protected]"", ""datetime"":""01.01.2018 02:45"", ""avatar"":{""width"":300, height:200, ""src"":""images/pic.jpg""}})")

With oUser
	MsgBox( .name & chr(9) & .email & chr(9) )
	With .avatar
	' With oUser.avatar
		MsgBox( chr(9) & .width & chr(9) & .height & chr(9) & .src )
	End With
	MsgBox( .datetime )
End With
И вот здесь будет работать как первый вариант, так и второй. А в AutoIt только второй.
Почему так
 
Верх