为了保护我的代码不被访问我使用的未声明的变量
if (typeof myVar != 'undefined')
Run Code Online (Sandbox Code Playgroud)
这工作正常,但我想在其中粘贴另一个if语句.像转换这个:
if (typeof myVar != 'undefined'){
if (myVar == "test"){}
}
Run Code Online (Sandbox Code Playgroud)
对此:
if (typeof myVar != 'undefined' && myVar == "test")
Run Code Online (Sandbox Code Playgroud)
考虑myVar可能是未定义的,这个最后的代码在每种使用情况和每个浏览器中都是安全的吗?
内部的各种语句是否可能if ()不按照它们编写的顺序进行评估?
我可以假设myVar == "test"将永远如果被执行myVar未定义?
Jam*_*ice 10
myVar == "test"如果myVar未定义,我可以假设永远不会被执行吗?
是.您正在测试的表达式是一个逻辑AND表达式,并指定了两个操作数的求值顺序:
生产LogicalANDExpression
:LogicalANDExpression&&BitwiseORExpression的评估如下(强调添加):
- 让lref成为评估LogicalANDExpression的结果.
- 设lval为GetValue(lref).
- 如果ToBoolean(lval)为false,则返回lval.
- 设rref是评估BitwiseORExpression的结果.
- 返回GetValue(rref).
这基本上说是评估第一个操作数,如果评估的结果是false,则整个表达式是false,并且永远不会计算第二个操作数.