作用域: 1 在es5.0中只有函数可以构成一个作用域 2 全局作用域: 整个js代码执行的环境 3 局部作用域: 函数可以构成一个局部作用域 4 全局变量: 在全局作用域中申明的变量 5 局部变量: 在函数构成的局部作用域中申明的变量 var a = 1; function fn(){ var a = 2; function fnA(){ a = 3; console.log(a); } fnA(); console.log(a); } fn(); console.log(a); 词法作用域(…
JavaScript 采用的是 词法作用域 的工作模型. 定义 词法化:大部分标准语言编译器的第一个工作阶段叫词法化(单词化),这个过程会对源代码中的字符进行检查,如果是有状态的解析过程,还会赋予单词意义. 词法作用域:定义在 词法阶段 的作用域. 词法作用域由谁决定:由你在写代码时将 变量 和 块作用域 写在哪里来决定.因此大部分情况下,词法分析器处理代码时会保持作用于不变. [例] function foo(a){ ; function bar(c){ console.log(a, b, c…
词法作用域是一套关于引擎如何寻找变量以及会在何处找到变量的规则. 词法作用域最重要的特征是它的定义过程发生在代码的书写阶段(假设你没有使用eval() 或 with) 欺骗词法:指修改词法作用域, 欺骗词法作用域会导致性能下降. 两种方法: eval 和 with.eval(..) 函数如果接受了含有一个或多个声明的代码, 就会修改其所处的词法作用域, 而with 声明实际上是根据你传递给它的对象凭空创建了一个全新的词法作用域.…
大家应该写过下面类似的代码吧,其实这里我想要表达的是有时候一个方法定义的地方和使用的地方会相隔十万八千里,那方法执行时,它能访问哪些变量,不能访问哪些变量,这个怎么判断呢?这个就是我们这次需要分析的问题——词法作用域 var classA = function () { this.prop1 = 1; } classA.prototype.func1 = function () { var that = this, var1 = 2; function a() { return function…
  作用域是一组规则,规定了引擎如何通过标识符名称来查询一个变量.作用域模型有两种:词法作用域和动态作用域.词法作用域是在编写时就已经确定的:通过阅读包含变量定义的数行源码就能知道变量的作用域.JavaScript采用的是词法作用域,也称为执行环境.动态作用域不是在代码编写时静态决定的,而是在执行过程中被确定.JavaScript实际上没有动态作用域,但是this的用法有些像动态作用域.静态作用域关心函数在何处被声明,而动态作用域关心函数在何处被调用. 一.作用域链   在ES6之前,一般认为J…
本文转自:http://otakustay.com/object-lookup-in-javascript/  ---很棒的一篇文章,作者的其他文章还暂时没读,但相信作者是一个谦虚 谨慎的好工程师 近期群里常有人提一些简单的问题,比如发一段代码乱七八糟的代码,然后说里面某个变量是什么,比如这里就有个很好的例子: function fn(arg) { console.log(this.arg); console.log(this); } fn(123); var o = { fn: fn }; o…
varclassA = function(){ ; } classA.prototype.func1 = function(){ var that = this, ; function a(){ return function(){ alert(var1); alert(this.prop1); }.apply(that); }; a(); } var objA = newClassA(); objA.func1(); 大家应该写过上面类似的代码吧,其实这里我想要表达的是有时候一个方法定义的地方…
关于JavaScript的作用域,最近听到一个名词:“词法作用域”:以前没有听说过(读书少),记录一下对此的理解,加深印象. 词法作用域:在JavaScript中,一个函数的作用域,在这个函数定义好的时候就决定好了:因此判断该函数的上一级作用域,不是看函数在哪里调用,而是看函数在哪里编写:请勿和this进行混淆了 第1个例子: function fn(callback){ var age=18; callback() } fn(function(){ console.log(age) // 此处…
JavaScript的引入方式 直接编写 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <!-- ------------页面内容--------------- --!> <script> aler…