javascript 基本类型有哪些?
Undefined:
Undefined 类型只有一个值 undefined ,表示变量未定义
此类型派生自Null 类型,所以出现一个很有趣的东西 if(null==undefined)alet(‘true’);将执行并弹出 true,因为条件是恒等的.
当我们定义javascript变量的时候,其实默认就赋值为 undefined.
var test; 其实等价于 var test=undefined;
所以:当你要给一个对象定义变量时,最好这样, var testClass=null; 这样 testClass的默认值不少 undefined,保持的是一个空引用的null,
下一步给testClass赋值: testClass=obj; 这是testClass 的引用直接指向 obj 对象所在的地址上.
Unll:
Unll 类型只有一个值 null ,表示一个空对象指针,也就是一个空引用.
所以 typeof(null) 会返回 object,因为他确实是一个引用类型,只是这个引用没有该指向的值地址.
Boolean:
Boolea类型有俩个值 true,false 此类型与数值完全不是一个定义(因为在sql中bit类型 0等价于false,1等价于true)
而javascript中 true 和 1不等且没有任何关系, false 和 0不等且没有任何关系.
javascript内置转换Boolean类型函数 Boolean(要转化的值)
这个函数比较有趣:
数据类型 转化为True 转化False
Boolean true false
String 任何非空字符 “”(空字符串)
Number 任何非零数字 0和NaN
Object 任何对象 null
Undefind undefined
看看上面的转化表,此函数不管任何类型通通能转化成Boolean类型,这大概就是弱类型的灵活性,但是也带来了很多安全性问题及语言的严格性和紧密度.
Number:
此类型值比较多,整数,浮点数及各种数字类型(10进制数值,16进制数值及8进制数值)
浮点数要注意了:js里的浮点数最高精度保留17位小数,但是算数计算时精度远不如整数,比如 0.2 0.1=0.30000000000000004
所以在浮点数进行算数计算时一定注意,尤其是if逻辑判断时,有时可能永远不会为 true
NaN:
这个类型有点意思了,它是一个特殊的数值,但是它不是一个Number数值.
什么时候会出现这种情况呢?
当一个函数返回值是Numnber时,但是函数执行一半报错,当时设计此类型的原因就是不想抛出异常继续执行,但是有没有真正能返回的Number数值,所以返回了一个NaN 数值.
任何数值与NaN操作都返回NaN 数值.(可以理解为和一个不确定的数做运算,结果肯定是不确定的)
NaN 数值不等于其他任何数值,包括 NaN 不等于 NaN(可以理解为一个不确定的数永远不等于一个具体的数,一个不确定的数也永远不会和另外一个不确定的数相等)
内置函数 isNaN() 判断一个值是否不能转化为数值, 比如 isNaN(10) 返回false, isNaN(NaN) 返回true, isNaN(‘AAA’) 返回true
isNaN(’10′) 返回false,因为’10′本来是字符串,但是可以转化为10,所以不是NaN.
isNaN(true) 返回false,因为true可以转化为1,所以不是NaN.
String:
由0或多个16位Unicode字符组成的字符序列.
在所有类型中,除了null 和 undefined 没有toString() 方法外,其他类型都有此方法来返回相应值的字符串表现形式.
String() 方法将值转化为对应的字符串表现形式.String(null) –>”null” String(undefined) –>”undefined” 其他类型都可以使用toString()方法来返回自己的字符串表现形式.
Object:
对象是一组数据和功能的集合.
创建一个对象并为其添加属性或方法 就可以创建自定义对象.
var obj=new Object(),调用构造函数创建对象,如果构造函数没有参数,也可以这样写 var obj=new Object;