由于公司最近项目少,就闲着没事看看书,可是又想写点读书心得记录下来,思考半天想要用什么方式记录下来,想要用word记录又怕时间长不看书又把他遗忘掉了!
今天看的是JavaScript第六版淘宝前端翻译的,在网上找了个PDF下载下来看的(*^__^*) 嘻嘻……
JavaScript的数据类型分为俩类:原始类型和对象类型;
JavaScript中原始类型包括:数字、字符串、布尔值;
JavaScript中有俩个特殊原始值:null,undefined;
JavaScript中除了数字、字符串、布尔值、null和undefined之外的都是对象(数组、对象、函数);
对象是属性的集合,每个属性都是由名/值对(值可以是原始值,比如数字、字符串、也可以是对象)构成;
JavaScript的类型可以分为原始类型和对象类型,也可分为可以拥有方法的类型和不能拥有方法的类型,同样可以分为可变类型和不可变类型;
可变类型的值是可以修改的。对象和数组是属于可变类型;JavaScript程序可以更改对象属性值和数组元素的值;
数字、布尔值、null和undefined属于不可变得类型;
字符串可以看成由字符组成的数组,你可能会认为他是可变的,然而在JavaScript中,字符串是不可变的;可以访问字符串的任意位置的文本,
但JavaScript并未提供修改已知字符串的文本内容方法。
我们在面试中经常能看到这样的问题:
例1:
var s="hello";
var t="hello";
s==t//true
问:为什么相等?
例2:
var arr=[1,2,3,4];
var obj=[1,2,3,4];
arr==obj//false;
问:为什么不相等?
例3:
var a=[1,2,3];
var b=a;
b[0]="hello";
console.log(a)//["hello",2,3];
问:为什么a数组被修改了;
不可变的原始值和可变的对象引用
这就是我今天读书的体会了,虽然对于大牛来说这都是基础知识,但是对于小白的我,感觉又在js的路上前进了一小步;
(一)先判断数据的类型:
1、s和t是原始值中的字符串;原始值是不可变的;
2、arr和obj都是对象;可变的是对象;
(二)数据类型的比较
1、原始值:
原始值得比较是值得比较,只有在他们的值相等时他们才相等;对于字符串来说则并不明显:如果比较俩个单独的字符串,当且仅当他们的长度相等且每个索引的字符都相等时,JavaScript才认为他们相等。
2、对象的比较:
对象的比较并非俩个值得比较,即使俩个对象包含同样的属性及相同的值,他们也是不相等的;各个索引元素完全相等的俩个数组也不相等;
我们通常将对象称为引用类型,以此来和JavaScript的基本类型分开,依照术语叫法,对象值都是引用,对象的比较都是引用的比较,当且仅当他们引用同一个基对象时他们才相等;
例1是原始值所以只要比较他们的长度和每个索引的字符相同就可以;
例2由于引用的基对象不同所以不相等;
例3由于引用的基对象相同,所以更改b的时候a也会被修改;
这就是我的心得,还请大牛留情!
网友评论