js-笔记
程序员文章站
2022-04-14 12:28:58
...
本篇文章给大家分享的就是一点js的笔记,有兴趣的朋友可以看一下
1、js会进行一次预编译处理;
var a; if (!(“a” in window)) { a = 1; }
alert(a); // undefined
这样,题目的意思就非常清楚了:首先声明a,然后判断a是否在存在,如果不存在就赋值为1,
很明显a永远在window里存在,这个赋值语 句永远不会执行,所以结果是undefined。
2、函数声明会覆盖变量声明,但不会覆盖变量赋值 来看栗子
function value(){ return 1; } alert(typeof value); //”function”
尽快变量声明在下面定义,但是变量value依然是function,也就是说这种情况下,
函数声明的优先级高于变量声明的优先级,但如果该 变量value赋值了,那结果就完全不一样了:
function value(){ return 1; } var value = 1; alert(typeof value); //”number”
该value赋值以后,变量赋值初始化就覆盖了函数声明。
浅拷贝只是拷贝了基本类型的数据,对于数组或对象的话,拷贝的只是其内存地址,因此存在元对象被篡改的可能;
function copy(p) { let c = {}; for(let i in p) { c[i] = p[i]; } return c; }
1、js会进行一次预编译处理;
var a; if (!(“a” in window)) { a = 1; } alert(a); // undefined
这样,题目的意思就非常清楚了:首先声明a,然后判断a是否在存在,如果不存在就赋值为1,
很明显a永远在window里存在,这个赋值语 句永远不会执行,所以结果是undefined。
2、函数声明会覆盖变量声明,但不会覆盖变量赋值 来看栗子
function value(){ return 1; } alert(typeof value); //”function”
尽快变量声明在下面定义,但是变量value依然是function,也就是说这种情况下,
函数声明的优先级高于变量声明的优先级,但如果该 变量value赋值了,那结果就完全不一样了:
function value(){ return 1; } var value = 1; alert(typeof value); //”number”
该value赋值以后,变量赋值初始化就覆盖了函数声明。
浅拷贝只是拷贝了基本类型的数据,对于数组或对象的话,拷贝的只是其内存地址,因此存在元对象被篡改的可能;
function copy(p) { let c = {}; for(let i in p) { c[i] = p[i]; } return c; }
相关推荐:
以上就是js-笔记 的详细内容,更多请关注其它相关文章!