2

我试图理解http://diveintohtml5.info/everything.html中的代码并坚持以下片段

typeof function(){} // "function"
typeof !function(){}  // "boolean"

我想了解为什么添加后它变成布尔值!

提前致谢

4

4 回答 4

6

的要点!是将值转换为布尔值truefalse(并将其反转)。

逻辑非运算符 (!)

产生式 UnaryExpression : ! UnaryExpression 的评估如下:

  1. 令 expr 为计算 UnaryExpression 的结果。
  2. 让 oldValue 为 ToBoolean(GetValue(expr))。
  3. 如果 oldValue 为 true,则返回 false
  4. 返回真。

http://www.ecma-international.org/ecma-262/5.1/#sec-11.4.9

于 2013-09-15T19:20:28.067 回答
1

!符号将值转换为trueor false

在您的情况下,该值为 a function(){}。因此,当!放置在它前面时,它会将其更改为false.

检查这个MSDN

于 2013-09-15T19:22:12.943 回答
0

!运算符总是返回一个布尔值,并且由于它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
于 2013-09-15T19:32:01.263 回答
-2

嗯……这是真假游戏吗???

typeof typeof function(){} // "string"
if("") {alert('truthy')} else {alert('falsy');}  // falsy
typeof !"" // "boolean"

我理解正确吗?

于 2013-09-15T19:25:10.500 回答