JS--作用域--详解/实例

发布时间:2022-06-27 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了JS--作用域--详解/实例脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。

原文网址:JS--作用域--详解/实例_IT利刃出鞘的博客-CSDN博客

简介

        本文用示例介绍JavaScript的作用域。

        作用域有三类:全局作用域、函数作用域、块作用域。

全局作用域

  1. 全局作用域在页面打开时被创建,页面关闭时被销毁
  2. 编写在script标签中的变量和函数,作用域为全局,在页面的任意位置都可以访问到
  3. 全局作用域中有全局对象window,代表一个浏览器窗口,由浏览器创建,可直接调用
let aa = 10;
var ab = 20;

function ac(){
    console.log('ac')
}

let ad = function(){
    console.log('ad')
}

console.log(window);

变量a, b,函数c和d都在全局作用域。 

JS--作用域--详解/实例

从上图可以看到,var和function声明的变量,可以在window上看到,但let声明的却看不到,原因如下:

ES5:顶层对象的属性等价于全局变量。(敲黑板了啊)

ES6:var、function声明的全局变量,依然是顶层对象的属性;let、const、class声明的全局变量不属于顶层对象的属性,也就是说ES6开始,全局变量和顶层对象的属性开始分离、脱钩。

函数作用域

        函数内的声明的变量和函数在该函数外访问不到。

示例

function c(){
	let a;
}
console.log(a);

结果

报错:Uncaught ReferenceError: a is not defined 

块作用域

大括号以内的范围是一个块作用域。这个大括号可以是if、while、for之后的大括号,也可以是单独一个大括号。

示例1:if的大括号

if(true){
	let a = 2;
}
console.log(a);

结果

报错: Uncaught ReferenceError: a is not defined

示例2:纯大括号

{
	let a = 2;
}
console.log(a);

结果

报错: Uncaught ReferenceError: a is not defined

脚本宝典总结

以上是脚本宝典为你收集整理的JS--作用域--详解/实例全部内容,希望文章能够帮你解决JS--作用域--详解/实例所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: