在适当的javascript行为中
在适当的javascript行为中,javascript,ecmascript-6,ecmascript-5,Javascript,Ecmascript 6,Ecmascript 5,vary=1; if(函数f(){}){ y+=f的类型; } 控制台日志(y)是此适当的行为。表达式函数f(){}将转换为布尔值。并且将返回true,因为函数总是真实的 console.log(布尔值(函数f(){}))是此适当的行为。表达式函数f(){}将转换为布尔值。并且将返回true,因为函数总是真实的 console.log(Boolean(函数f(){}))在您的例子中,函数是在if语句中声明和定义的,该语句是一个块范围,其范围仅在这些括号内有效。if块被计算是因为在JavaSc
vary=1;
if(函数f(){}){
y+=f的类型;
}
控制台日志(y)代码>是此适当的行为。表达式函数f(){}
将转换为布尔值。并且将返回true,因为函数总是真实的
console.log(布尔值(函数f(){}))
是此适当的行为。表达式函数f(){}
将转换为布尔值。并且将返回true,因为函数总是真实的
console.log(Boolean(函数f(){}))
在您的例子中,函数是在if
语句中声明和定义的,该语句是一个块范围,其范围仅在这些括号内有效。if块被计算是因为在JavaScript中,if
条件中的任何内容都被强制为等效的truthy或falsy值,并且对于所有真值,执行if
循环
vary=1;
if(函数f(){}){//f的作用域有限,即仅在if括号内
y+=typeof f;//typeof f为“未定义”,且1+undefined表示为“1未定义”
}
控制台日志(y)代码>在本例中,函数在if
语句中声明和定义,该语句是块范围,其范围仅在这些括号内有效。if块被计算是因为在JavaScript中,if
条件中的任何内容都被强制为等效的truthy或falsy值,并且对于所有真值,执行if
循环
vary=1;
if(函数f(){}){//f的作用域有限,即仅在if括号内
y+=typeof f;//typeof f为“未定义”,且1+undefined表示为“1未定义”
}
控制台日志(y)代码>什么是“适当的行为”?到底什么需要解释?什么是“适当行为”的精确复制品?究竟需要解释什么?只是一个小细节的精确副本:f
是未定义的
,因为命名函数表达式的名称仅在函数内部可见。@Teemu命名函数表达式的名称仅在函数内部可见。我认为这是不对的。如果我们在全局范围内声明一个命名函数,那么它在所有其他函数中都可用。如果我是,请纠正我wrong@MaheerAliTeemu说“命名函数表达式”,你说的是全局声明。请参阅或@Bergi,那么这里的函数x(){}
被命名为函数expression?@MaheerAli“那么这里的函数x(){}被命名为函数expression?”-是的。尝试在if
语句中的命名函数表达式之后使用f
。您会发现,f
将是未定义的。只是一个小小的吹毛求疵:f
是未定义的,因为命名函数表达式的名称仅在函数内部可见。@Teemu命名函数表达式的名称仅在函数内部可见。我认为这是不对的。如果我们在全局范围内声明一个命名函数,那么它在所有其他函数中都可用。如果我是,请纠正我wrong@MaheerAliTeemu说“命名函数表达式”,你说的是全局声明。请参阅或@Bergi,那么这里的函数x(){}
被命名为函数expression?@MaheerAli“那么这里的函数x(){}被命名为函数expression?”-是的。尝试在if
语句中的命名函数表达式之后使用f
。你会发现f
将是未定义的。函数根本没有声明函数根本没有声明