JavaScript自动类型转换混淆

hel*_*hod 3 javascript type-conversion

鉴于此脚本:

var number = NaN;

if (!number) {
  alert("yes");
}

alert(number == false);
Run Code Online (Sandbox Code Playgroud)

为什么第一个表达式的`!number计算结果为true,而第二个表达式的number == false计算结果为false?

http://jsfiddle.net/8EWG4/

Afo*_*nça 5

请看这篇文章:http: //www.smashingmagazine.com/2011/05/30/10-oddities-and-secrets-about-javascript/

关于javascript有一些技巧,包括关于NaN的信息:

NaN是一个数字

你认为null是一个对象是荒谬的?尝试处理NaN的想法 - "不是数字" - 是一个数字!而且,NaN被认为不等于它自己!你的头疼吗?

alert(typeof NaN); //alerts 'Number'
alert(NaN === NaN); //evaluates false
Run Code Online (Sandbox Code Playgroud)

事实上,NaN并不等于任何东西.确认某些东西是NaN的唯一方法是通过函数isNaN().

  • 你实际上可以使用该属性作为检查`NaN`的方法 - 如果`x!== x`产生`true`,那么`x`必须是'NaN`. (3认同)