前言:
而今兄弟们对“js对象重新赋值”可能比较珍视,小伙伴们都想要知道一些“js对象重新赋值”的相关文章。那么小编也在网摘上汇集了一些有关“js对象重新赋值””的相关内容,希望朋友们能喜欢,大家一起来了解一下吧!JS是单线程的语言,执行顺序肯定是顺序执行,但是JS 引擎并不是一行一行地分析和执行程序,而是一段一段地分析执行,会先进行编译阶段然后才是执行阶段。
例子一:变量提升
fn; // undefinedvar fn = function () { console.log('fn1');}fn(); // fn1,fn赋值var fn2 = function () { console.log('fn2');}fn(); // fn2,fn重新赋值
例子二:函数提升
fn(); // fn2function fn() { console.log('fn1');}fn(); // fn2function fn() { console.log('fn2');}fn(); // fn2
例子三:声明优先级,函数 > 变量
fn(); // fn2var fn = function() { console.log('fn1');}fn(); // fn1,fn重新赋值function fn() { console.log('fn2');}fn(); // fn1
上面三个例子中,第一个例子是变量提升,第二个例子是函数提升,第三个例子是函数声明优先级高于变量声明。
需要注意的是同一作用域下存在多个同名函数声明,后面的会替换前面的函数声明。
执行上下文
执行上下文总共有三种类型全局执行上下文:只有一个,浏览器中的全局对象就是 window 对象,this 指向这个全局对象。函数执行上下文:存在无数个,只有在函数被调用的时候才会被创建,每次调用函数都会创建一个新的执行上下文。Eval 函数执行上下文: 指的是运行在 eval 函数中的代码,很少用而且不建议使用
后续。。。
总结如下:
1、全局上下文的变量对象初始化是全局对象2、函数上下文的变量对象初始化只包括 Arguments 对象3、在进入执行上下文时会给变量对象添加形参、函数声明、变量声明等初始的属性值4、在代码执行阶段,会再次修改变量对象的属性值
版权声明:
本站文章均来自互联网搜集,如有侵犯您的权益,请联系我们删除,谢谢。
标签: #js对象重新赋值