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 ...
随机推荐
- Maven dependency spring-web vs spring-webmvc
<dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmv ...
- 用简单直白的方式讲解A星寻路算法原理
很多游戏特别是rts,rpg类游戏,都需要用到寻路.寻路算法有深度优先搜索(DFS),广度优先搜索(BFS),A星算法等,而A星算法是一种具备启发性策略的算法,效率是几种算法中最高的,因此也成为游戏中 ...
- iOS中JSONModel的使用
iOS中JSONModel的使用 流弊的JSON数据模型框架 https://github.com/jsonmodel/jsonmodel 版本 1.3.0 如果你喜欢JSONModel,并且使用 ...
- web前端开发CSS命名规范参考
做为一个web前端工程师,每天接触HTML.css就像吃饭一样,但是作为一名合作.优秀的web前端工程师,对DIV+CSS命名还是有一定的规范的,本文整理了一份web前端开发中DIV+CSS各种命名规 ...
- c#选择填空题题库
http://wenku.baidu.com/link?url=0g2mfcX_atcRIhJRqJnXzT1s2AIY-a2nR7pUguJn8cdSoy6V0CATevid3eQ7l-kgIDB6 ...
- 函数响应式编程(FRP)—基础概念篇
原文出处:http://ios.jobbole.com/86815/. 一函数响应式编程 说到函数响应式编程,就不得不提到函数式编程,他们俩有什么关系呢?今天我们就详细的解析一下他们的关系. 现在下面 ...
- php 的包管理工具 composer
官方网站 https://getcomposer.org/ 下载地址 https://getcomposer.org/download/ 安装教程 https://laravist.com/serie ...
- 配置perl-cgi的运行环境,由于Active Perl安装在d:\perl
Apache 1.3.22 for Win32+PHP 4.0.6+Active Perl 5.006001+Zend Optimizer v1.1.0+mod_gzip 1.3.19.1a+MySQ ...
- 基于php5.6 php.ini详解
PHP中auto_prepend_file与auto_append_file的用法 第一种方法:在所有页面的顶部与底部都加入require语句.例如:?123require('header.php') ...
- angularJs表单校验(超级详细!!!)
html代码 <!DOCTYPE html> <html ng-app="angularFormCheckModule"> <head> < ...