js 作用域和闭包1
来源:互联网 发布:淘宝买iphone6p 编辑:程序博客网 时间:2024/05/20 23:40
1.执行上下文
范围:一段<script>或者一个函数
一段<script>会产生一个全局执行上下文:变量定义、函数声明;
一个函数会产生一个函数执行上下文:变量定义、函数声明、this、arguments;
//democonsole.log(a); // undefinedvar a = 100;fn('zhangsan'); // 'zhangsan' 20function fn(name) { age =20; console.log(name, age); var age;} // 不推荐这么写
2.函数声明和函数表达式
fn(); //没错function fn() { //声明}fn1(); // 有错var fn1 = function() { //表达式}
3.this
this要在执行时才能确认,定义时无法确认;
//demovar a = { name : 'A', fn : function() { console.log(this.name); }}a.fn() // this == aa.fn.call({name: 'B'}); // this == {name: 'B'}var fn1 = a.fnfn1() // this == window
4.this使用的几种情况
- 作为构造函数执行
- 作为对象属性执行
- 作为普通函数执行
- call apply bind
//构造函数function Foo(name){ this = {} this.name = name return this}var f = new Foo('zhangsan')//作为对象属性var obj = { name : 'A', printName : function(){ console.log(this.name) }}obj.printName()//作为普通函数执行function fn(){ console.log(this)//Window}fn()//call applyfunction fn1(name,age){ alert(name) console.log(this)}fn1.call({x:100},'zhangsan',20)//bandvar fn2 = function(name,age){ alert(name) console.log(this)}.bind({y:200})fn2('zhangsan',20)
5.作用域
- 没有块级作用域
- 只有函数和全局作用域
//无块级作用域if(true){ var name = 'zhangsan';}console.log(name);//函数和全局作用域var a = 100;function fn() { var a = 200; console.log('fn',a);}console.log('global', a);fn();
6.作用域链
var a = 100;function fn() { var b = 200; // 当前作用域没有定义的变量,即自由变量,去它的父级作用域去寻找,这个父级作用域是定义时的,不是执行时的 console.log(a); console.log(b);}fn();
7.闭包
//demofunction F1() { var a =100; //返回一个函数 return function () { console.log(a); }}// f1得到一个函数var f1 = F1();var a = 200;f1() // 100
闭包使用的场景:函数作为返回值;函数作为参数传递
阅读全文
0 0
- js 作用域和闭包1
- {{JS}}函数作用域和闭包
- js闭包和作用域
- 简述JS作用域、作用域链和闭包
- 【JS】作用域、闭包
- js 作用域、闭包
- JS教程:词法作用域和闭包
- JS教程:词法作用域和闭包
- JS教程:词法作用域和闭包
- js作用域和闭包的知识
- js作用域链和闭包的理解
- JS基础知识:变量对象、作用域链和闭包
- 你不知道的JS---作用域和闭包
- JS中的作用域和闭包的小知识点
- JS的的作用域和闭包
- js作用域链,js闭包
- js 闭包作用
- js 闭包作用
- Frog Jump--深度遍历,动态规划--leetcode
- Noip2012 Day2 T1 同余方程(扩展欧几里得)
- android studio打包签名apk
- java面试题----用java代码写死锁(线程join写法)
- Java相关文章索引(12)
- js 作用域和闭包1
- HDU-1269 迷宫城堡(连通分量)
- 自己写一个stack容器
- (HDU
- 关于用-jar运行springboot项目遇到的两个问题
- Hadoop历史服务器详解
- 【VB.net自学笔记(一)】XML的构成
- 设计模式的7大原则
- 全球搜索引擎Top10 可惜很多人只用过第四个