个人对js理解吧
1.作用域
复制代码
1
2
3
4
5
6
7
8
9
10
11
12var a = 1 (function(){ a = 2 console.log(a) // 2 })() (function(){ var a = 3 console.log(a) // 3 console.log(window.a) // 1 })()
2.函数直接挂载变量
复制代码
1
2
3
4
5
6var b = 10; (function b(){ b = 20; console.log(b); })();
由于b在b函数中,所以打印出来是b的函数
3.变量提升
复制代码
1
2
3
4
5
6
7
8
9var a = 10; (function () { console.log(a) a = 5 console.log(window.a) var a = 20; console.log(a) })()
输出应该为undefined,10,20
4.对对象的理解
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20// example 1 var a={}, b='123', c=123; a[b]='b'; a[c]='c'; console.log(a[b]); --------------------- // example 2 var a={}, b=Symbol('123'), c=Symbol('123'); a[b]='b'; a[c]='c'; console.log(a[b]); --------------------- // example 3 var a={}, b={key:'123'}, c={key:'456'}; a[b]='b'; a[c]='c'; console.log(a[b]);
由于对象的键名只能是字符串,如果键名是对象或者数组的时候,就会转成字符串
5.深拷贝,浅拷贝
复制代码
1
2
3
4
5
6
7
8
9function changeObjProperty(o) { o.siteUrl = "http://www.baidu.com" o = new Object() o.siteUrl = "http://www.google.com" } let webSite = new Object(); changeObjProperty(webSite); console.log(webSite.siteUrl);
6.对==,===,Object.is(),理解
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15let obj = {}, arr = [],obj1 = {} let obj2 = obj console.log(obj == obj1) // false console.log(obj === obj1) // false console.log(obj === obj2) // true console.log(-0 === +0) // true console.log(NaN === NaN) // false console.log(Object.is(NaN,NaN)) // true console.log(Object.is(-0,+0)) // false console.log('' == null) // false console.log(''== undefined) // false console.log(''=== undefined) // false console.log(null == undefined) // true console.log(null === undefined) // false
7.js连续赋值
复制代码
1
2
3
4
5
6var a = {n: 1}; var b = a; a.x = a = {n: 2}; console.log(a.x); console.log(b.x);
最后
以上就是纯真蜗牛最近收集整理的关于个人对js理解的全部内容,更多相关个人对js理解内容请搜索靠谱客的其他文章。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复