《你不知道的JS》第二版上卷第三章笔记

  1. 全局作用域:定义在函数外部的变量,函数内部可以调用
  2. 局部作用域:定义在函数内部的变量,函数外部不可以调用
  3. 块级作用域:(如同下面这个例子)
for(var i=1; i<10; i++) {var b =100;console.log(i);
}
console.log(i,b);  //输出的还是:10 100!!!
//说明js没有块级作用域

当我们需要在立即执行一个函数,又不想暴露函数内部的变量,如何解决这个问题?
方法一:使用立即执行函数(IIFE)

var a = 2;
(function foo(){var a = 3;console.log(a);
})();
console.log(a); //undefined//第二个参数的意义:作为变量传入到函数中
(function foo(global){var c = 3;console.log(global);
})(window);
//立即函数定义的c在外面被屏蔽
// console.log(c);

方法二:ES6定义的let
let定义的变量隐式地锁在了任意的作用域中

//上面的例子中,暴露在全局的for循环,当使用let去定义i,在外部就访问不到i了
{let k =12;
}
// console.log(k);  输出为undefined

补充:ES6中 const 定义常量 既然是常量了,就没有更改的余地

Js-函数作用域和块作用域相关推荐

  1. 《你不知道的JavaScript(上)》笔记——函数作用域和块作用域

    关于函数声明:如果 function 是声明中的第一个词, 那么就是一个函数声明, 否则就是一个函数表达式.例如匿名函数这种形式,函数会被当作函数表达式而不是一个标准的函数声明来处理. (functi ...

  2. 了解js基础知识中的作用域和闭包以及闭包的一些应用场景,浅析函数柯里化

    js基础知识中的作用域和闭包 一.作用域 1.作用域.自由变量简介 (1)作用域定义 (2)作用域实例演示 (3)自由变量定义 (4)自由变量实例演示 2.作用域链简介 (1)作用域链定义 (2)作用 ...

  3. 学习笔记=《你不知道的JavaScript(上卷)》第三章:函数作用域和块级作用域...

    3.1 函数中的作用域 (1)JavaScript具有基于函数的作用域,每声明一个函数的时候会为其自身创建一个'气泡',这个气泡内声明的变量或函数外界无法访问. 函数作用域的含义是指,属于这个函数的全 ...

  4. php js函数作用域,javascript 作用域详解

    作用域理解:定义的变量.函数生效的范围.javascript 有全局作用域和函数作用域两种. 注:es6实现let 块级作用域不是js原生的,底层同样是通过var实现的.如果想了解具体细节,请访问ba ...

  5. node.js 函数外定义的变量 函数内赋值后为什么不能带出_(44)python少儿编程之函数(五)--- 作用域...

    函数嵌套 在一个函数内定义了另一个函数 如图,定义了一个outer函数,然后在outer函数里面又定义了一个inner()函数,此时我们只能在outer函数调用inner()函数,如果在outer函数 ...

  6. 作用域js和java区别_js作用域理解

    学习笔记:(图中水印来自同名微信订阅号,现已改名为'码上猿梦') //javaScript作用域: //首先声明一点,js中没有块级作用域, 比如java中for循环中for(int i = 0; i ...

  7. JS 【详解】作用域

    作用域即变量/函数可以被访问的区域. 全局作用域 {} 和函数外的区域为全局作用域. 全局作用域中的声明的变量是全局变量,在页面的任意的部分都可以访问. 全局作用域中无法访问函数作用域的变量 全局作用 ...

  8. 【JS】原始值与引用值、执行上下文与作用域链、作用域链增强、变量声明、标识符查找

    1.原始值与引用值 EcmaScript变量可以包含两种不同类型的数据:原始值.引用值 原始值:最简单的数据 引用值:由多个值构成的对象 六种原始值: Undefined Null Boolean N ...

  9. 作用域(全局作用域和函数作用域)

    作用域: 作用域就是一个变量可以使用的范围,主要分为全局作用域和函数作用域 全局作用域就是 Js 中最外层的作用域 函数作用域是 js 通过函数创建的一个独立作用域,函数可以嵌套,所以作用域也可以嵌套 ...

  10. 深入理解javascript作用域系列第四篇——块作用域

    前面的话 尽管函数作用域是最常见的作用域单元,也是现行大多数javascript最普遍的设计方法,但其他类型的作用域单元也是存在的,并且通过使用其他类型的作用域单元甚至可以实现维护起来更加优秀.简洁的 ...

最新文章

  1. JSTL fmt标签格式化日期时分秒显示为00:00:00和12:00:00问题
  2. 静态库与动态库详细剖析
  3. 训练损失越来越大_无需contrastive学习,微软亚研提基于实例分类无监督预训练方法...
  4. 柿子不能和什么同吃?柿子相克食物大盘点
  5. 主席树学习小结(POJ 2104)
  6. 从java到C++入门
  7. 韩顺平php视频笔记80 81 错误日志 异常捕获
  8. 自写小函数处理 javascript 0.3*0.2 浮点类型相乘问题
  9. php 服务器 mac地址吗,php获取服务器端mac和客户端mac的地址
  10. PostgreSQL rocks, except when it blocks: Understanding locks
  11. 第五章软件项目风险管理
  12. mysql读写分离如何保证数据同步_MySQL 主从同步 、 MySQL 读写分离
  13. 思科笔记-Four,ospf协议实现全网互通,spf算法,简短总结篇
  14. Azure部署的应用程序访问页面页面时加载字体文件(.woff.woff2)出现 404 错误问题
  15. android多屏幕多分辨率的一些概念
  16. 路由器重温——RIP路由
  17. c#模拟微信运动排行榜
  18. 【实战】如何抓住Facebook天秤币的机会
  19. Python连接维特智能角度传感器JY61/JY901的方法
  20. 卡尔曼滤波器简介——多维卡尔曼滤波

热门文章

  1. 停止员工拖延症!工时管理系统的作用之一
  2. ESXi 6.7 封装驱动(Intel-I219V使用非vib的离线包驱动格式)
  3. 正确使用“width:100%“
  4. 水平线标记的用法和属性
  5. 瑞星linux杀毒软件进程,高手请教:麻烦帮忙解释几个:瑞星杀毒软件的进程各表明什么?...
  6. nowcoder contest#115 江西财经大学第一届程序设计竞赛 G 小Q的口袋校园 记忆化搜索 DP
  7. 学习笔记——Exploiting Unintended Feature Leakage in Collaborative Learning(协作学习中的非预期特征泄露研究)
  8. 编译原理实验三 自下而上语法分析
  9. Chuck语言学习笔记——1.环境搭建与程序运行
  10. 怎么戒网瘾?一个玩了上百款游戏的程序员告诉你有多少废话