var y = 1;
if (function f(){}) {
y += typeof f;
}
console.log(y);
此代码的输出为1undefined
。我知道在运行时使用if
对eval
语句中的条件进行评估的原因,但是我不明白为什么它不输出1function
。
答案 0 :(得分:0)
您需要在if括号之外定义函数,如果不是,则f
的范围仅限于条件内部。
如果您这样修改:
var y = 1;
//Pick One:
var f = () => {}; //If you are using ES6
function f() {}; //If you are not using ES6
if (f) {
y += typeof f;
}
console.log(y); // 1function
答案 1 :(得分:-1)
在您的示例中,该函数仅作用于user=abc;domain=CPD.Intr.Service;useNTLMv2=true
语句的测试条件的括号内。
尝试以下操作:
if
您可以在if测试中定义函数的指针是否在外部定义。
var y = 1;
var f = function() { };
if (f) {
y += typeof f;
}
console.log(y)
答案 2 :(得分:-1)
在if语句的条件内使用function x() {}
表示法定义的函数在if语句的花括号内不可用。试试:
if (function f() {return 20;}) {
console.log(f);
}
对我来说(在Safari或Node REPL中),这会引发ReferenceError,因为它找不到f
,因为在该范围内未定义f
。