<script>
var Faizan = {
isSharp: true,
use: function(){
return this.isSharp = "Dangerous"//!this.isSharp;
}
};
console.log(Faizan.use());
console.log( !Faizan.isSharp, "Verify the value of isSharp has been changed." );
</script>
上述脚本的输出是 1.Dangerous 的 2.False 第一个输出是非常样本,因为我预期它但第二个输出是出乎意料的错误为什么? 当 isSharp 更改为 Dangerous 然后为什么!Faizan.isSharp 返回False? isSharp值已更改
答案 0 :(得分:2)
@Sacho说“!”是逻辑NOT运算符,所以:
p | !p
-------------
true | false
false | true
在JavaScript中,非空字符串将在测试时评估为true,请参阅下面的示例:
var simpleText = "This is simple text";
if (simpleText) {
console.log("The value is truthy");
} else {
console.log("The value is falsy");
}
// => The value is truthy
空字符串将评估为false:
var emptyText = "";
if (emptyText) {
console.log("The value is truthy");
} else {
console.log("The value is falsy");
}
// => The value is falsy
您可以在此处详细了解:http://www.sitepoint.com/javascript-truthy-falsy/
TL; DR
你的陈述!Faizan.isSharp等于!true,等于false。