Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/435.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在适当的javascript行为中_Javascript_Ecmascript 6_Ecmascript 5 - Fatal编程技术网

在适当的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
将是未定义的。函数根本没有声明函数根本没有声明