js作用域学习
代码解析至少分两步
1):查找var,function参数例如下面这个例子
a= 未定义
fn1={alert(2)}函数的话,是整个整体
2):逐行读代码:类似=+-%*等都是表达式,表达式可以改变值
example1:
<script>
alert(a) //最终结果:undefiner
var a=1
function fn1(){
alert(alert(2));
}
</script>
example2:
alert(a) //4
var a=1
alert(a) //1
function a(){alert(2)}
alert(a) //1
var a=3;
alert(a) //3
function a(){alert(4)}
alert(a) //3
//分析;
1):查找var function 参数,,重名时只会留下有值的,这里第一个是undefine,所以踢掉,若都有值,那么谁后执行就留下谁
a=3(最后留下来的值)
2):
example3:
var a=1;
function fn1(){
alert(a);
var a=2
}
fn1();//undefine
alert(a)//a=1
步骤1:
1):查找var function 参数
a=undefine
fn1=function fn1(){
alert(a);
var a=2
}
步骤2
a=1
fn1=function fn1(){
alert(a);
var a=2
}
遇到里函数调用,函数内部的解析:函数内部查找var function参数
1,a=undefine
逐行运行函数内部的东西
alert出来是个 undefine
a=2;这里的a是局部变量
步骤3,a=1;这里的a是要全局变量
example4:
var a=1;
function fn1(){
alert(a);//1
a=2
}
fn1()
alert(a)//2
步骤1;解析
a=undefine
fn1=function fn1(){
alert(a)
a=2}
步骤2:逐行读代码
a=1
步骤3
函数内部:空,,函数内部逐行读代码:从子级作用域找,
步骤4:得到值
example5:
var a=1
function fn1(a){
alert(a);
a=2;
}
fn1(a);//1
alert(a);//1
js作用域学习的更多相关文章
- JS基础学习——作用域
JS基础学习--作用域 什么是作用域 变量的作用域就是变量能被访问到的代码范围,比如在下面的这个js代码中,变量a的作用域就是函数foo,因此在全局作用域内的console.log(a)语句不能访问到 ...
- Javascript作用域学习笔记(三)
看完<你不知道的javascript>上,对作用域的新的理解(2018-9-25更) 一.学习笔记: 1.javascript中的作用域和作用域链 + 每个函数在被调用时都会创建一个 ...
- js需要学习的
1.js作用域 2.html5和css3 3.js面向对象 4.js原生ajax 5.js与后端交互 6.html5手机移动端页面练习 7.jquery中的jQuery UI框架和jQuery Eas ...
- JS基础学习——闭包
JS基础学习--闭包 什么是闭包 闭包的定义如下,它的意思是闭包使得函数可以记住和访问它的词法范围,即使函数是在它声明的词法范围外执行.更简单来讲,函数为了自己能够正确执行,它对自己的词法范围产生闭包 ...
- js面向对象学习 - 对象概念及创建对象
原文地址:js面向对象学习笔记 一.对象概念 对象是什么?对象是“无序属性的集合,其属性可以包括基本值,对象或者函数”.也就是一组名值对的无序集合. 对象的特性(不可直接访问),也就是属性包含两种,数 ...
- js数组学习整理
原文地址:js数组学习整理 常用的js数组操作方法及原理 1.声明数组的方式 var colors = new Array();//空的数组 var colors = new Array(3); // ...
- JS作用域面试题总结
关于JS作用域问题,是面试的时候面试官乐此不疲的面试题,有时候确实是令人抓狂,今天看到一个讲解这个问题的视频,明白了那些所谓的“原理”顿时有种豁然开朗的感觉~~~ 1.js作用域(全局变量,局部变量) ...
- js入门学习~ 运动应用小例
要实现的效果如下: 鼠标移入各个小方块,实现对应的效果(变宽,变高,移入透明,移出恢复)~~ (且各运动相互之前不干扰) 主要是练习多个物体的运动框架~~ --------------------- ...
- js作用域问题
<script type="text/javascript"> alert(i);//Uncaught ReferenceError: i is not defined ...
随机推荐
- HTML5中video 和 ogg
HTML5中 的ogg 从网上学习HTML5之video时看到了下面的代码,不太清楚ogg是什么,于是搜索了一些知识点供了解.
- Resharp最新破解方法
ReSharper是一个JetBrains公司出品的著名的代码生成工具,其能帮助Microsoft Visual Studio成为一个更佳的IDE.它包括一系列丰富的能大大增加C#和Visual Ba ...
- Windows环境下的NodeJS+NPM+Bower安装配置步骤
Windows下的NodeJS安装是比较方便的(v0.6.0版本之后,支持windows native),只需要登陆官网(http://nodejs.org/),便可以看到首页的“INSTALL”按钮 ...
- AE唯一值符号化的流程以及过程
唯一值符号化的流程以及过程(转) 一.获取ServerStyle库中的符号 Style符号库在ArcGIS Engine开发中对应的是ServerStyle符号库,可以通过专门的转换程 ...
- JS中注意事项
(一)判断中注意事项 一.所有的相对路径都别拿来做判断 1.img src='...' 2.href='1.css', href='html/index.html' 3.img src='http:/ ...
- 点击页面其它地方隐藏div所想到的jQuery的delegate
在网页开发的过程中经常遇到的一个需求就是点击一div内部做某些操作,而点击页面其它地方隐藏该div.比如很多导航菜单,当菜单展开的时候,就会要求点击页面其它非菜单地方,隐藏该菜单. 先从最简单的开始, ...
- android-ProgressBar
制定ProgressBar显示风格 * 参考系统自带的进度条 * ProgressBar分类 * 可以精确显示进度(可以显示刻度和百分比) * 不可以精确显示进度 * 标题上ProgressBar的设 ...
- java.lang.StringBuilder
1.StringBuilder 的对象和 String 的对象类似,并且 StringBuilder 的对象能被修改.Internally,这个对象被当做一个包含一系列字符的可变长度的数组对待.这个序 ...
- HttpSessionListener和HttpSessionBindingListener监听session的销毁
1. 使用HttpSessionListener public class OnlineUserListener implements HttpSessionListener { public voi ...
- CacheManagerUtils.java
package com.vcredit.framework.utils; import net.sf.ehcache.Cache;import net.sf.ehcache.CacheManager; ...