javaScript总结51: 变量查找规则与词法作用域
作用域:
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);//
词法作用域(静态作用域):
- 外部作用域不能访问内容作用域的变量
- 查找变量时,顺着作用域链查找
- 在代码执行之前,先执行预解析规则
- 如果要调用函数,函数内部也要先进行预解析
- 如果要给变量赋值之前,一定要先找到变量
变量的查找规则
1 先在自己的作用域里面找,如果没有就顺着作用域链往上找,找到则返回,找不到则一直找到全局为止 2 如果要直接赋值的话,找到全局也没有,那么浏览器会帮我们自动创建一个出来 3 如果只是访问的话,找到全局都没有就报错 xxx is not defined
javaScript总结51: 变量查找规则与词法作用域的更多相关文章
- 《你不知道的JavaScript》读书笔记(二)词法作用域
JavaScript 采用的是 词法作用域 的工作模型. 定义 词法化:大部分标准语言编译器的第一个工作阶段叫词法化(单词化),这个过程会对源代码中的字符进行检查,如果是有状态的解析过程,还会赋予单词 ...
- javascript中的变量、执行环境、作用域
- 《你不知道的JavaScript(上)》笔记——词法作用域
词法作用域是一套关于引擎如何寻找变量以及会在何处找到变量的规则. 词法作用域最重要的特征是它的定义过程发生在代码的书写阶段(假设你没有使用eval() 或 with) 欺骗词法:指修改词法作用域, 欺 ...
- JavaScript闭包之“词法作用域”
大家应该写过下面类似的代码吧,其实这里我想要表达的是有时候一个方法定义的地方和使用的地方会相隔十万八千里,那方法执行时,它能访问哪些变量,不能访问哪些变量,这个怎么判断呢?这个就是我们这次需要分析的问 ...
- JavaScript夯实基础系列(一):词法作用域
作用域是一组规则,规定了引擎如何通过标识符名称来查询一个变量.作用域模型有两种:词法作用域和动态作用域.词法作用域是在编写时就已经确定的:通过阅读包含变量定义的数行源码就能知道变量的作用域.Jav ...
- (转)javascript中的对象查找
本文转自:http://otakustay.com/object-lookup-in-javascript/ ---很棒的一篇文章,作者的其他文章还暂时没读,但相信作者是一个谦虚 谨慎的好工程师 近 ...
- JS教程:词法作用域和闭包 (网络资源)
varclassA = function(){ ; } classA.prototype.func1 = function(){ var that = this, ; function a(){ re ...
- 关于JavaScript的词法作用域及变量提升的个人理解
关于JavaScript的作用域,最近听到一个名词:“词法作用域”:以前没有听说过(读书少),记录一下对此的理解,加深印象. 词法作用域:在JavaScript中,一个函数的作用域,在这个函数定义好的 ...
- JavaScript 基础(一) - JavaScript的引入方式,JavaScript 变量命名规则,JS 的五种基本数据类型,ECMAScript 算数运算符,逻辑运算符
JavaScript的引入方式 直接编写 <!DOCTYPE html> <html lang="en"> <head> <meta ch ...
随机推荐
- Python压缩及解压文件
Zip压缩 #-*- coding:utf-8 -*- __author__ = "MuT6 Sch01aR" import zipfile #加载模块 # 压缩 z = zipf ...
- OpenStack--Cinder(G版)中的volume type
一.volume type的相关操作 Cinder中的卷类型,是卷的一种标识,各个OpenStack的发行者可根据自身对系统的约束来定义卷类型的使用.G版的Cinder中与卷类型相关的两种资源:typ ...
- yum问题的解决办法
关于使用yum“The program package-cleanup is...”的解决办法 在使用yum 时总是有提示信息: The program package-cleanup is f ...
- APP压力测试异常结果分析
CRASH:即奔溃,应用程序在使用过程中,非正常的退出 ANR:Application Not responding(响应延时,响应时间过长)
- 05_java之方法
01方法的概述 * A: 为什么要有方法 * 提高代码的复用性 * B: 什么是方法 * 完成特定功能的代码块. 02方法的定义格式 * A: 方法的格式 * 修饰符 返回值类型 方法名(参数类型 参 ...
- datagridview绑定xml
//加载描述的XML private bool loadXML() { //创建DataTable对象dt DataTable dt = new DataTable("clientXML&q ...
- PHP函数内访问全局变量
$dbcon='123'; 方法一.funtion fun1(){global $dbcon;$dbcon-> 就可以访问了.} 方法二$GLOBALS['$dbcon'];
- jq 遍历 each方法
1.选择器+遍历 $('div').each(function (i){ i就是索引值 this 表示获取遍历每一个dom对象 }); 2.选择器+遍历 $('div').each(function ...
- 通过ajax异步调用返回值
调用方法的时候传递一个callback方法来获取成功回调的值test(function (data) { }); function test(callback){ $.ajax({ type: &qu ...
- struts2 action重定向action中文乱码处理
比如:Action方法productCategorySave()变量message,传递给Action方法productCategoryAdd(),当变量message为中文变量时,要进行编码设置,不 ...