美文网首页前端
javascript变量机制

javascript变量机制

作者: xhbisme | 来源:发表于2018-06-07 21:48 被阅读0次

Q:为啥我不写 var 我的变量就成了全局的了?

    大家都知道,js中变量生命用var,但是,为什么不写var的时候,我们的变量在全局都能访问到呢?带着这个问题,我们继续探究。

    原来,和js变量机制有关系,一切都是js在搞鬼。因为js怕你用的时候找不到这个变量。为啥js会有这种操作?

JavaScript变量是按照作用域链来进行查找的。如果不写var,作用域链查找会将变量隐式提升至全局。

那,作用域链是怎样查找的呢?其实明白了什么叫作用域链,就明白了它是怎么查找的了。

首先,当JavaScript代码执行一段可执行代码(executable code)时,会创建对应的执行上下文。包括:变量对象(Variable object,VO),作用域链(Scope chain),this。当查找变量的时候,会先从当前上下文的变量对象中查找,如果没有找到,就会从父级(词法层面上的父级)执行上下文的变量对象中查找,一直找到全局上下文的变量对象,也就是全局对象。这样由多个执行上下文的变量对象构成的链表就叫做作用域链。

相关文章

  • 关于js的变量提升(hoisting)

    javascript的变量声明具有hoisting机制,JavaScript引擎在执行的时候,会把所有变量的声明都...

  • javascript变量机制

    Q:为啥我不写 var 我的变量就成了全局的了? 大家都知道,js中变量生命用var,但是,为什么不写var的时候...

  • javascript中的内存泄漏

    垃圾回收机制 JavaScript具有自动垃圾回收机制,来判断哪些变量不再需要,释放他所占的内存。 1. 变量的生...

  • javascript变量声明提升(hoisting)

    java script的变量声明具有hoisting机制,JavaScript引擎在执行的时候,会把所有变量的声明...

  • 前端基础知识总结-1

    #前端基础 # ## JavaScript基础 ## ###渲染机制与变量 ### script代码为什么放到bo...

  • 函数传参的问题

    函数传参 值和引用 JavaScript 中没有指针,引用的工作机制也不尽相同。在 JavaScript 中变量不...

  • 浏览器原理2:JavaScript机制

    JavaScript机制 [toc] 变量提升(Hoisting) 看代码的执行效果 结果 结论 在执行过程中,若...

  • JS cookie详解(增删改)

    JavaScript中的一个机制:cookie。可以达到真正全局变量的要求。cookie是浏览器 提供的一种机制,...

  • JavaScript的预解析

    在JavaScript中有一种机制就是:“预解析机制” 简单来说就是在解析过程中会先将函数声明和变量声明提前解析函...

  • js的GC

    javascript的垃圾回收机制(GC)原理:一段时间间隔内查看内存中变量是否被使用,如果不被使用,销毁变量并释...

网友评论

    本文标题:javascript变量机制

    本文链接:https://www.haomeiwen.com/subject/riunsftx.html