参考阮一峰javascript教程
在js数据类型做一些笔记,和之前学习的c/c++略有不同,把感觉不太准的地方做一个记录。
一、数据类型
- number
- string
- object
- null
- boolean
- undefined
- null
(可以用typeof运算符来判断值到底是什么类型,instanceof可以区分数组和对象)
1.null, undefined, boolean
null与undefined的区别
null表示空值,即该处的值现在为空。调用函数时,某个参数未设置任何值,这时就可以传入null,表示该参数为空。
undefined表示“未定义”,比如
var i;
i //undefined
function f(x) {
return x;
}
f() //undefined
var o = new Object();
o.p //undefined
function f(){}
f() //undefined
boolean
转化规则(以下的六个值会被转为false,其余的都是true)
- undefined
- null
- false
- 0
- NaN
- " " 或 ' '
2.number
熟悉几个东西~~~
NaN
NaN是 JavaScript 的特殊值,表示“非数字”(Not a Number),主要出现在将字符串解析成数字出错的场合。
5 - 'x' // NaN
0 / 0 // NaN
NaN不是独立的数据类型,而是一个特殊数值,它的数据类型依然属于Number。
Infinity
Infinity表示“无穷”,且有正负无穷之分
// 场景一
Math.pow(2, 1024)
// Infinity
// 场景二
0 / 0 // NaN
1 / 0 // Infinity
还有一些方法,不做详细的解释了,用到了再查吧~
3.string
没啥说的。看教程。
4.object
回顾一点点
对象的引用
如果不同的变量名指向同一个对象,那么它们都是这个对象的引用,也就是说指向同一个内存地址。修改其中一个变量,会影响到其他所有变量。
var o1 = {};
var o2 = o1;
o1.a = 1;
o2.a // 1
o2.b = 2;
o1.b // 2
上面代码中,o1和o2指向同一个对象,因此为其中任何一个变量添加属性,另一个变量都可以读写该属性。
此时,如果取消某一个变量对于原对象的引用,不会影响到另一个变量。
var o1 = {};
var o2 = o1;
o1 = 1;
o2 // {}
上面代码中,o1和o2指向同一个对象,然后o1的值变为1,这时不会对o2产生影响,o2还是指向原来的那个对象。
但是,这种引用只局限于对象,如果两个变量指向同一个原始类型的值。那么,变量这时都是值的拷贝。
var x = 1;
var y = x;
x = 2;
y // 1
上面的代码中,当x的值发生变化后,y的值并不变,这就表示y和x并不是指向同一个内存地址。
其他
- 属性的查看:Object.keys
- 属性的删除:delete
- 属性是否存在:in
- 属性的遍历:for...in循环
二、数据类型转化
任意类型转字符串:
-
String(x)
String -
x.toString()
toString -
x+''
''
任意类型转数字
- Number(x)
- parseInt(x,10)
- parseFloat(x)
- x -0
- +x
任意类型转布尔
- Boolean(x)
- !!x
网友评论