Javascript基础(四)作用域和闭包
2017-07-07 19:30
525 查看
题目:
说一下对变量提升的理解
说明this有几种不同的场景
创建10个a标签,点击的时候弹出对应序列号
如何理解作用域
实际开发中闭包的应用
———————我是思考的分界线——————————–
知识点:
1、执行上下文
2、this
3、作用域
4、作用域链
5、闭包
1、执行上下文
范围:一段
全局:变量定义,函数声明 一段
函数:变量定义,函数声明 ,this,arguments
函数声明:
函数表达式:
this:
作为构造函数运行
作为对象属性执行
作为普通函数执行
call apply bind
作用域:
作用域链:
闭包:
闭包就是能够读取其他函数内部变量的函数
闭包的使用场景:
函数作为返回值
函数作为参数传递
解题:
1、说一下对变量提升的理解、
2、 说明this有几种不同的场景
3、创建10个a标签,点击的时候弹出对应序列号
4、如何理解作用域
5、 实际开发中闭包的应用
说一下对变量提升的理解
说明this有几种不同的场景
创建10个a标签,点击的时候弹出对应序列号
如何理解作用域
实际开发中闭包的应用
———————我是思考的分界线——————————–
知识点:
1、执行上下文
2、this
3、作用域
4、作用域链
5、闭包
1、执行上下文
console.log(a) //undefined var a = 100 fn('zhangsan') //'zhangsan' 20 function fn(name){ age = 20 console.log(name,age) var age }
范围:一段
<script>或者一个函数(会生成一个全局的执行上下文)
全局:变量定义,函数声明 一段
<script>
函数:变量定义,函数声明 ,this,arguments
函数声明:
function a(){}
函数表达式:
var a = function(){}
this:
this要在执行时才能确认,定义时无法确认
作为构造函数运行
作为对象属性执行
作为普通函数执行
call apply bind
//call function fn(name,age){ alert(name) console.log(this) } fn.call({x:100},'zhangsan',20) //call 强制将this指向为第一个参数 fn.apply({x:100},['zhangsan',20]) //apply 强制将this指向为第一个参数第二个参数为数组
//bind var fn = function(name,age){ alert(name) console.log(this) }.bind({y:200}) fn('zhangsan',20) //定义完成用bind强制改变this指向为bind的参数 //不能用函数声明的方式.bind
作用域:
js没有块级作用域 只有函数和全局作用域
作用域链:
var a = 100 function fn (){ var b = 200 //当前作用域没有定义的变量,即'自由变量' console.log(a) console.log(b) }
闭包:
闭包就是能够读取其他函数内部变量的函数
闭包的使用场景:
函数作为返回值
函数作为参数传递
解题:
1、说一下对变量提升的理解、
变量定义 函数声明(注意函数声明和表达式的区别) 都会被放在前面。
2、 说明this有几种不同的场景
(1)、作为构造函数执行 (2)、作为对象属性 (3)、普通函数 (4)、call apply bind
3、创建10个a标签,点击的时候弹出对应序列号
var i for( i=0; i<10; i++ ){ (function(i){ var a = document.createElement('a') a.innerHTML = i + '<br/>' a.addEventListener(click 95bf ,function(e){ e.preventDefault() alert(i) }) document.body.appendChild(a) })(i) }
4、如何理解作用域
自由变量 作用域链,即自由变量的查找 闭包的两个场景
5、 实际开发中闭包的应用
封装变量,收敛权限
function isFirstLoad(){ var _list = [] return function(id){ if(_list.indexOf(id) >= 0){ return false }else { _list.push(id) return true } } } //使用 var firstLoad = isFirstLoad() firstLoad(10)//true firstLoad(10)//false
相关文章推荐
- JavaScript全面了解作用域(基础、this、闭包、继承)之二
- JavaScript基础---作用域,匿名函数和闭包
- javascript的基础学习——Javascript组成、变量类型(类型转换)、isNaN()、作用域和闭包
- JavaScript全面了解作用域(基础、this、闭包、继承)之一
- JavaScript 精粹 基础 进阶(7)函数和作用域(闭包、作用域)
- JavaScript基础---作用域,匿名函数和闭包【转】
- javascript面向对象技术基础(六)(作用域、闭包、模拟私有属性)
- javascript闭包及作用域
- 【javascript基础】延长作用域链
- 基础决定高度:JavaScript中的作用域,JS作用域
- 精通Javascript 之 作用域和闭包
- Javascript基础复习 匿名函数和闭包
- javascript 词法作用域和闭包分析说明
- 理解Javascript_15_作用域分配与变量访问规则,再送个闭包
- JavaScript基础---理解闭包问题
- JavaScript要理解闭包先了解词法作用域
- 理解Javascript_15_作用域分配与变量访问规则,再送个闭包
- Js整理备忘(06)——函数基础(二) 作用域与闭包
- 【转】Javascript 的词法作用域、调用对象和闭包