概述
个人对js理解吧
1.作用域
var a = 1
(function(){
a = 2
console.log(a) // 2
})()
(function(){
var a = 3
console.log(a) // 3
console.log(window.a) // 1
})()
2.函数直接挂载变量
var b = 10;
(function b(){
b = 20;
console.log(b);
})();
由于b在b函数中,所以打印出来是b的函数
3.变量提升
var a = 10;
(function () {
console.log(a)
a = 5
console.log(window.a)
var a = 20;
console.log(a)
})()
输出应该为undefined,10,20
4.对对象的理解
// 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.深拷贝,浅拷贝
function 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(),理解
let 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连续赋值
var a = {n: 1};
var b = a;
a.x = a = {n: 2};
console.log(a.x);
console.log(b.x);
最后
以上就是纯真蜗牛为你收集整理的个人对js理解的全部内容,希望文章能够帮你解决个人对js理解所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复