我试图理解http://diveintohtml5.info/everything.html中的代码并坚持以下片段
typeof function(){} // "function"
typeof !function(){} // "boolean"
我想了解为什么添加后它变成布尔值!
提前致谢
我试图理解http://diveintohtml5.info/everything.html中的代码并坚持以下片段
typeof function(){} // "function"
typeof !function(){} // "boolean"
我想了解为什么添加后它变成布尔值!
提前致谢
的要点!
是将值转换为布尔值true
或false
(并将其反转)。
逻辑非运算符 (!)
产生式 UnaryExpression : ! UnaryExpression 的评估如下:
- 令 expr 为计算 UnaryExpression 的结果。
- 让 oldValue 为 ToBoolean(GetValue(expr))。
- 如果 oldValue 为 true,则返回 false
- 返回真。
!
运算符总是返回一个布尔值,并且由于它function(){}
不是一个假*(类似假的)值,因此您只是返回它的布尔逆,这是false
因为该值不是假的。
例如,您可以在 JS 控制台中尝试这些:
console.log(5) //5
console.log(!5) //false, because 5 is not null
console.log("hello") //hello
console.log(!"hello") //false, because "hello" is not null
var fun = function() { console.log("Yay") }
console.log(fun) //Shows the function definition
console.log(!fun) //false, because the value of fun is not null
嗯……这是真假游戏吗???
typeof typeof function(){} // "string"
if("") {alert('truthy')} else {alert('falsy');} // falsy
typeof !"" // "boolean"
我理解正确吗?