javascript细节点滴NaN,null,undefined
JavaScript中isNaN函数
JavaScript中isNaN函数方法是返回一个 Boolean 值,指明提供的值是否是保留值 NaN 。
使用方法:isNaN(numValue)
其中必选项 numvalue 参数为要检查是否为 NAN 的值。
如果值是 NaN, 那么 isNaN 函数返回 true ,否则返回 false 。 使用这个函数的典型情况是检查 parseInt 和 parseFloat 方法的返回值。还有一种办法,变量可以与它自身进行比较。 如果比较的结果不等,那么它就是 NaN 。 这是因为 NaN 是唯一与自身不等的值。
注意:NaN “Not a Number”。出现这个数值比较少见,以至于我们可以不理它。当运算无法返回正确的数值时,就会返回“NaN”值。NaN 值非常特殊,因为它“不是数字”,所以任何数跟它都不相等,甚至 NaN 本身也不等于 NaN 。
isNaN是个函数,它计算一个参数,检查它是否为数值。
[html]
null 意指『沒有值』。被当做一个对象(object)。
如:取得一个不存在的dom对象 null === document.getElementById('notExistElement');
<script type="text/javascript">
alert(typeof(unll));//object
</script>
undefined
有以下两种情况会被视为undefined:
1. 一个变量没有被声明,(程序报错)
2. 声明的变量没有被赋值。(object)。
<script type="text/javascript">
alert(typeof(undefined));//undefined
</script>
<script type="text/javascript">
var objNull = null;
var objUndef = undefined;
alert(objNull);//null
alert(objUndef); //undefined
alert(objNull + objUndef);//NaN
</script>
<script type="text/javascript">
alert(objNull + 123); //123
alert(objNull + "123");//null123
alert(objUndef + 123); //NaN
alert(objUndef + "123");//defined123
</script>
<script type="text/javascript">
var objDeclare;
alert(objUnDeclare);//出错:提示objUnDeclare没有被定义
alert(objDeclare);//undefined
alert(typeof(objDeclare));//undefined
alert(typeof(objUnDeclare));//undefined
</script>
if(!$) {
function $(sid) {return document.getElementById(sid);}
}
这段代码的作用是如果已经引入prototype中的$定义,就不再定义,否则使用自己定义的。但是在FF下确出现了问题。
可能是FF下对未定义的变量直接做错误处理,而IE则会进行自动的类型转换,也就是说如果系统中没有定义$那么!$就会被转换为true。这又是ie为兼容性做的事,但同样,大家不领情的认为它不符合标准。。。
如果想让它正常运行只有这样
if(typeof $==='undefined') {
function $(sid) {return document.getElementById(sid);}
}
备忘一下。。。
typeof NaN ==='number'
typeof undefined ==='undefined'
typeof null==='object'
ECMAScript认为undefined是从null派生出来的,所以把它们定义为相等的。但是,如果在一些情况下,我们一定要区分这两个值,那应该怎么办呢?可以使用下面的两种方法。
1. alert(null === undefined); //output "false"
2. alert(typeof null == typeof undefined); //output "false"
null与undefined的类型是不一样的,所以输出"false"。
而===代表绝对等于,在这里null === undefined输出false。
[/html]