zoukankan      html  css  js  c++  java
  • javascript类型注意事项

    以下是javascript类型的注意事项:

    • null:表示尚未存在的对象,注意,尽管尚未存在,也是个对象啊,所以用typeof检测一个null值变量的结果是Object;不过,为了便于写if语句,在js中,"undefined==false", "null=false", 因此,"undefined==null"。
    • 整数:最容易犯的错误就是,忘了070其实是个八进制数,相当于十进制的56;
    • 浮点数:“在进行运算之前,真正存储的是字符串”——这应该是解释执行的本质决定的吧——直接后果是,alert(0.8)这样的语句可以正确输出,而alert(2*0.8)的输出就成了"2.40000000000000003"
    • 数字边界:数字有几个边界值,分别是Number.MAX_VALUE(最大值), Number.MIN_VALUE(最小值), Number.POSITIVE_INFINITY(正无穷), Number.NEGATIVE_INFINITY(负无穷), Infinity(无穷大,-Infinity,这个有点莫名其妙,不知道为啥又搞出一套);特别地,还有一个isFinit(iNumber)函数来判断数字是否为无穷大。
    • NaN:一些需要数字作为参数的函数,当传入的实参无法转换为数字时,往往会返回这个值;关于NaN,最重要的就是要记住NaN!=NaN,因此判断一个变量是否为NaN,一定要使用isNaN(var)函数。
    • 将字符串转换为数字:sVar.parseInt()是最常用的函数,也最容易出错,为了保险起见,最好每次调用的时候,都加上“进制”的参数,比如:a.parseInt(10),就制定了按十进制转换字符串a;Number(sVar)也是一种转换方式,不同的是,它要求整个字符串都得是有效数字,因此Number("4.5.5")将返回NaN;
    • 判断变量类型:一般情况下,可以先用typeof 运算符,如果结果是"object",再用instanceof来判断;奇怪的是,不知道是ECMAScript标准的问题还是IE实现的问题,instanceof不认为原始类型值的变量是对象,而使用constructor属性似乎可以应付所有类型的变量,如下:
     1 var temp="a string for test";   
     2 //下面这句返回"string"    http://sosoft.cnblogs.com/
     3 alert( typeof temp);   
     4 //下面这句返回"false"   
     5 alert(temp instanceof String);   
     6   
     7 //下面这句就回返"true"了   
     8 var temp2=new String("another new string");   
     9 alert(temp2 instanceof String);   
    10   
    11 //constructor属性是很好的替代品   
    12 //下面这句返回"true"   
    13 alert(temp.constructor==String);   

    http://www.cnblogs.com/sosoft/

  • 相关阅读:
    吐血巨献:VB网络编程(webbrowser+Inet+抓包封包+经验)
    亦思验证码识别系统3.1详解
    开机自动连接宽带程序
    轻松报选修智能报选修程序(适用于正方教学管理系统)
    低调发布一个百度谷歌关键字搜索工具
    解惑:Postmessage函数模拟鼠标单击指定坐标
    分享一些经典资源
    英文单词缩写查询
    css控制的个性导航栏
    导航栏中加入自动弹出下拉菜单
  • 原文地址:https://www.cnblogs.com/sosoft/p/javascriptnote.html
Copyright © 2011-2022 走看看