JS作用域及作用域链
JavaScript 函数作用域
在 JavaScript 中有两种作用域类型:
- 局部作用域
- 全局作用域
JavaScript 拥有函数作用域:每个函数创建一个新的作用域。
作用域决定了这些变量的可访问性(可见性)。
函数内部定义的变量从函数外部是不可访问的(不可见的)。
全局 JavaScript 变量
函数之外声明的变量,会成为全局变量。
全局变量的作用域是全局的:网页的所有脚本和函数都能够访问它。
// js 作用域就是代码名字(变量)在某个范围内起作用和效果
// 全局作用域,在整个script标签里,或者在一个单独的JS文件
// var num = 10;
// console.log(num);
// function fn(){
// // 局部作用域 在函数内部起作用
// var num = 20;
// console.log(num);
// }
// fn();
// 1,全局变量
// 在全局变量作用域下var声明的变量
// 不使用var声明变量也是全局变量
var num = 20;
console.log(num);
// 2.局部变量
局部 JavaScript 变量
在 JavaScript 函数中声明的变量,会成为函数的局部变量。
局部变量的作用域是局部的:只能在函数内部访问它们。
由于只能在函数内部识别局部变量,因此能够在不同函数中使用同名变量。
在函数开始时会创建局部变量,在函数完成时会删除它们。
// 函数内部直接var声明
// 函数的形参也是局部变量
function fn(arw){
var num1 = 30;
num2 = 40;
console.log(num1)
}
fn();
console.log(num2)
// console.log(arw)
// 块级作用域就是用花括号阔起来的 if{} for{}
// 作用域链:内部函数访问外部函数的变量,采取的是链式查找的方式来决定取那个值 这种结果我们称为作用域链
var num = 10;
function fn(){
var num = 15;
function fun(){
console.log(num);
}
fun();
}
fn();
浙公网安备 33010602011771号