美文网首页
Javascript 高级 --作用域

Javascript 高级 --作用域

作者: 风清扬101 | 来源:发表于2017-04-23 12:05 被阅读0次

      今天我们来谈谈计算机编程的作用域的问题和理解。

计算机在解读我们编写的代码时,也就是高级语言时,它会有一个编译,执行的过程,来翻译我们的高级语言,转化为二进制。在编译的时候,js引擎会在构造函数创建对象时,会产生原型来提高我们的运算效率,把共同的方法和属性挂载在原型上。来让不同的对象的实例来通过自动生成的原生链去访问原型的方法和属性。也就是通过内部的原型指针_proto_来一级一级的去寻找。当然,先把父级的对象实例替换成子级的原型。这是我们常用的原生链来继承。计算机在解读我们的编码时,会按照一定的顺序来解释。这个解读代码顺序是非常重要的。是我们看不见的机制。这是最基本的原理。首先是,计算机也就是js引擎先把全局变量的定义的操作先提升到顶部,只是提升的定义,不会提升定义的值和调用。然后,再执行到具体的局部作用域时,就会把具体作用域的定义的操作来提升到具体的作用域顶部。请看下面的例子。

   alert(a);   // 在全局作用域下,计算机首先是把全局的定义的变量来提升到顶部,只是定义的操作,所以,弹出的是undefinde;这是变量的提升的机制来帮助计算机提高效率。

  var  a = 12;

for (var i = 0;i<10;i++) { 

  var a = i;   // 

function change () {  

   alert(a);

   var a = 90;

   var b = 0;

}

   var c = 59;

  alert(change ());

我们可以类比的学习原型链的寻找模式,来理解作用链的寻找模式。

作用域链的寻找模式是从当前的作用域出发点,往上来寻找。寻找变量的。

var a  =10;

for  (var i =0;i<10;i++)  {  

var a = i;

}

alert(a);  // 注意是9.

这个题就是考证的作用域的机制。首先,js没有块级的概念。因此,for循环的i循环变量就是全局变量。在循环中,i的值等于9的时候,循环体就停止了。i给a的赋值就停止了。所以,a的值就是9.在执行alert时,又给a开辟新的空间,访问的是第二个a的空间保存的值。就是9了。

相关文章

  • 面试涉及的知识点

    csshtml重点:javascript(闭包,作用域,高级特性) 重点:es6 async ,作用域,模块化...

  • Javascript 高级 --作用域

    今天我们来谈谈计算机编程的作用域的问题和理解。 计算机在解读我们编写的代码时,也就是高级语言时,它会有一个编...

  • 老司机Studio 第五章

    高级函数 sort函数 filter函数 作用域 在JavaScript中,我们可以将作用域定义为一套规则,这套规...

  • JavaScript中块级作用域和函数作用域

    在看《JavaScript高级编程》时看到块级作用域时,将ES5和ES6中的函数作用域和块级作用域的作用范围搞混淆...

  • javascript高级程序设计读书笔记(四)

    变量,作用域,和内存的问题 javascript高级程序设计读书笔记(四) 变量,作用域,和内存的问题 变量 不存...

  • JavaScript作用域学习笔记

    @(JS技巧)[JavaScript, 作用域] JavaScript作用域学习笔记 概念: 作用域就是变量与函数...

  • 【个人笔记】前端开发笔记整理

    JavaScript (参考了《JavaScript高级程序设计》和部分知乎答案) 作用域 指可访问变量、对象、函...

  • 初认闭包

    写在最前:和其他大多数高级编程语言一样,JavaScript也采用词法作用域。 为了实现词法作用域,JavaScr...

  • 07-JavaScript作用域和预解析

    JavaScript作用域 JavaScript中有全局作用域和局部作用域 相同作用域内不能有同名的变量和函数 不...

  • JavaScript 作用域和作用域链

    JavaScript 作用域 作用域就是变量与函数的可访问范围。在JavaScript中,变量的作用域有全局作用域...

网友评论

      本文标题:Javascript 高级 --作用域

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