Mar*_*lin 26 javascript boolean
我正在阅读关于JavaScript的Mozilla手册,我在阅读布尔对象时谈到了这一点.我看不到他们的一个用途.他们有什么意义?你为什么不使用true和false?
顺便说一句,我根本不懂Java,我不怕学习新东西,因此我为什么要学习JavaScript.我是一名PHP程序员,后端人员,我想学习如何做一些前端工作,所以我正在阅读Mozilla JavaScript指南.
小智 13
因为(有点可悲)这是如何定义语言的 - 我怀疑它最初是为了性能/优化; 请注意分配给string下面的财产的情况.(Java的工作方式类似,尽管Scala和Python在很大程度上拒绝了这种区别).
请注意,这Boolean不是唯一的"包装类型".也有String和Number,例如.
因此,仍存在许多怪癖(下面的内容可能同样适用于布尔值):
typeof("foo") // string
typeof(new String("foo")) // object
"foo" instanceof String // false
new String("foo") instanceof String // true
// result is undefined: a string is a primitive and silently "ate" the assignment
// this also makes it a much cheaper value as it's not a "real" object
x = "f"; x.bar = 42; x.bar
// result is 42: a String is a "real" object with real properties!
// however, this also means that it may have a good bit more overhead
x = new String("f"); x.bar = 42; x.bar
Run Code Online (Sandbox Code Playgroud)
我知道这并没有"回答"这个问题,而是在火上扔了一些木头;-)
从上面来看,唯一真正的"问题"可能new Boolean(false)是真值y值.
快乐的编码.
c-s*_*ile 10
JavaScript语言设计有很多尘埃落定的角落,而布尔就是其中之一; 它没有在实践中使用.
这个:
var a = [];
alert(a instanceof Array);
Run Code Online (Sandbox Code Playgroud)
会告诉你"真实".但是这个:
var b = true;
alert(b instanceof Boolean);
Run Code Online (Sandbox Code Playgroud)
由于某种原因将显示"虚假".
简而言之:忘了它.
创建一个新的布尔对象"基本上"运行语句中的一些代码,然后从那里返回真正的布尔值.
来自相同的文档:
1 var b = new Boolean(false);
2 if (b) // this condition evaluates to true
Run Code Online (Sandbox Code Playgroud)
https://developer.mozilla.org/en/JavaScript/Guide/Statements#if...else_Statement
Boolean.prototype.bang = function() {
return !this.valueOf();
}
true.bang(); // false
Run Code Online (Sandbox Code Playgroud)
JavaScript 中的一切都是对象。但同时我们也有原语。确实很混乱,别想太多。
| 归档时间: |
|
| 查看次数: |
1427 次 |
| 最近记录: |