javaScript的作用域

全局作用域

  • 变量在函数、{}外定义的,即为全局变量
  • 全局变量有全局作用域:网页中的所有脚本和函数均可以使用
let carName = "Volvo";
 function myFunction() 
 {
  console.info( carName ); // 此处可调用 carName 变量
   }
   myFunction() ; // "Volvo"

注意:全局变量在全局作用域上,任何函数和代码段都可以访问,甚至修改它的值。

局部作用域

  • 局部作用域,又称函数作用域,是通过一个函数形成的作用域。(变量在函数内声明,变量就只在函数内部有效。)
let carName = "BMW"; //全局变量
function myFunction()
 {
  let carName = "Volvo"; 
  console.info( carName ); // Volvo   局部变量
  }
  myFunction(); 
  console.info( carName ); // BMW
<!-------------------------------------!>
<!-------------------------------------!>
<!-------------------------------------!>
function myFunction() 
{
 let carName = "Volvo"; // 函数内可调用 carName 变量
  }
myFunction(); 
console.info( carName ); // 报错 123456

注意:若全局变量与局部变量冲突,则局部变量会覆盖全局变量

let carName = "BMW"; // 全局变量
 function myFunction()
  { 
  carName = "Volvo"; // 这个 carName 是全局变量。它更改了全局变量的值。
   }
   myFunction() ; 
   console.info( carName ); // Volvo

块作用域

ES6 中新增了块级作用域,能约束 let ,const 定义的变量,常量。 块作用域由 {}包裹代码,代码在
{}中就行成了一个作用域空间。在这个空间里,let / const 定义的变量 / 常量只在这对{}里有效,
在外部是没法访问的。

{ 
var a = 1; 
console.log(a); // 1
 }console.log(a); // 1 
 // 可见,通过var定义的变量可以跨块作用域访问到

 { let a = 1; 
 console.log(a); // 1
  }
  console.log(a); // 报错。let 定义的变量,无法跨块作用域访问。

注意:if语句和for语句里面的{ }也属于块作用域。

if(true) { 
var c = 3;
 }
 console.log(c); // 3 
 for(var i = 0; i < 4; i++) { 
 var d = 5;
  };
  console.log(i); // 4 (循环结束i已经是4,所以此处i为4) console.log(d); // 5
   // if语句和for语句中用var定义的变量可以在外面访问到

if(true) { 
let c = 3;
 }console.log(c); // 报错
  for(let i = 0; i < 4; i++) { 
  let d = 5; 
  };console.log(i); // 报错 console.log(d); // 报错 
  // if语句和for语句中用 let 定义的变量在外面访问不到, 1234567891011
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值