ES6 之前 JS 没有块级作用域。
举例:
2024年10月25日
作用域:域表示的就是范围,即作用范围,就是一个名字在什么地方可以被使用,什么时候不能使用;
在c,java 等语言中 采用块级的作用范围
{
var num=123;
{
console.log(num);// 123
}
}
console.log(num); //报错
在js中采用词法作用域:
所谓词法(代码)作用域,就是代码在编写过程中体现出来的作用范围,代码一旦写好,不用执行,作用范围就已经确定好了,这个就是所谓词法作用域
2024年10月25日
Scope(作用域) 是应用在 HTML (视图) 和 JavaScript (控制器)之间的纽带。
Scope 是一个对象,有可用的方法和属性。
Scope 可应用在视图和控制器上。
如何使用 Scope
当你在 AngularJS 创建控制器时,你可以将 $scope 对象当作一个参数传递:
AngularJS 实例
控制器中的属性对应了视图上的属性:
2024年10月25日
作用域理解:定义的变量、函数生效的范围。javascript 有全局作用域和函数作用域两种。注:es6实现let 块级作用域不是js原生的,底层同样是通过var实现的。如果想了解具体细节,请访问babel官方 对es6中let 进行解析。
执行上下文
范围:一段内或者一个函数内;
全局:函数声明、变量声明 。范围:;
函数:函数声明、变量声明、this、arguments。范围:一个函数内部;
2024年10月25日
通常来说,一段代码中所用到的名字(如变量名)并不总是有效和可用的,而限定这个名字的可用性的代码范围就是这个名字的作用域。作用域机制可以有效减少命名冲突的情况发生。本节将对作用域进行详细讲解。
2024年10月25日
函数和变量的有效范围就是作用域
1、作用域的概念
var a = 10;
function f1(){
console.log(a);
}
f1();// 变量a在函数外定义,可以在函数内使用
function f2(){
var b = 20;
}
console.log(b); // 变量b在函数内定义,在函数外无法访问,报错:b is not defined
2024年10月25日
大部分语言的最基础就是在变量中存储值,并且在稍后取出或修改这些值的能力。实际上,在变量中存储值和取出值的能力,给程序赋予了 状态 。
如果没有这样的概念,一个程序虽然可以执行一些任务,但是它们将会受到极大的限制。
但是在我们的程序中引入了变量,引出了我们现在将要解决的最有趣的问题:这些变量 存活 在哪里?换句话说,它们被存储在哪儿?而且,最重要的是,程序如何在需要它们的时候找到它们?
2024年10月25日
主要包括以下几个概念:
1、全局作用域(Global Scope)与局部作用域(Local Scope)
2、静态(词法)作用域(Lexical Scope)与动态作用域(Dynamic Scope)
3、块级作用域(Block Scope)
4、作用域链(Scope Chain)
现在来具体举例说明下这几个区别:
2024年10月25日
作用域是在运行时代码中的某些特定部分中的变量,函数和对象的可访问性。换句话说,作用域决定了代码块中变量和其他资源的可见性。
示例: