JS中作用域的概念:
表示变量或函数起作用的区域,指代了它们在什么样的上下文中执行,亦即上下文执行环境。Javascript的作用域只有两种:全局作用域和本地作用域,本地作用域是按照函数来区分的。
首先来看几道题目:
1.
复制代码 代码如下:
if(true){
var aa= "bb";
}
console.log(aa); //bb
for(var i = 0; i < 100; i++){
//do
}
console.log(i); //100
2.
复制代码 代码如下:
var bb = '11111';
function aa() {
alert(bb);//undefine
var bb = 'test';
alert(bb);//test
var cc = "test1";
alert(age);//语法错误
}
aa();
3.
复制代码 代码如下:
var test = '1111111';
function aa() {
alert(test);
}
function bb() {
var test = '22222222';
aa();
}
bb();//alert(1111111);
4.
复制代码 代码如下:
alert(typeof aa); //function
alert(typeof bb); //undefined function aa() { //函数定义式
alert('I am 111111111');
};
var bb = function() { //函数表达式
}
alert(typeof bb);//function
5.
复制代码 代码如下:
function aa(){
var bb = "test";
cc = "测试";
alert(bb);
}
aa();
alert(cc);//测试
alert(bb);//语法报错
上面这5道题目全部概括了js中作用域的问题
可以总结出这么几个观点
一、无块级作用域
从第一题中可以看出来,在{}中执行后,变量并没有被销毁,还是保存在内存中的,因此我们可以访问到的。
二、JavaScript中的函数运行在它们被定义的作用域里,而不是它们被执行的作用域里.
这里提到函数的作用域链这个概念,在ECMA262中,是这样的
任何执行上下文时刻的作用域, 都是由作用域链(scope chain)来实现.
在一个函数被定义的时候, 会将它定义时候的scope chain链接到这个函数对象的[[scope]]属性.
在一个函数对象被调用的时候,会创建一个活动对象(也就是一个对象), 然后对于每一个函数的形参,都命名为该活动对象的命名属性, 然后将这个活动对象做为此时的作用域链(scope chain)最前端, 并将这个函数对象的[[scope]]加入到scope chain中.
所以题目3 结果是alert(1111111);
三、JS会提前处理function定义式 和var关键字
如题目4 开始alert(bb); //undefine ,alert(age)//语法报错,这两个有什么区别呢,原因就是后面有var bb =“test”,在初始化的时候提前处理了var 这个关键字,只是这个开始未赋值
将代码修改成这样的,可以看出来
复制代码 代码如下:
var dd = '11111';
function aa() {
alert(bb);//undefine
var bb = 'test';
alert(bb);//test
var cc = "test1";
alert(age);//语法错误
}
aa();
alert(dd);//11111
alert(cc);//语法报错
此处alert(bb)没有报语法错误,alert(age)报语法错误。
但是请注意:
复制代码 代码如下:
<script>
alert(typeof aa); //结果:undefined
</script>
<script>
function aa() {
alert('yupeng');
}
</script>
这说明js预编译是以段为单元的。题目4同理
四、函数级作用域
函数里面的定义的变量,在函数执行完后就销毁了,不占有内存区域了。
所以题目2最后的alert(cc);语法报错,题目5最后到 alert(bb)同理
相关推荐:
seo重点是什么,seo最重要的指标 ,ai网格怎么用
SEO策划:让你的网站迅速脱颖而出的秘诀,seo优化和技巧
seo读什么书,seo是哪个专业的 ,亚洲9ai吧
文章写作AI:让创作更高效、精准的智能助手
AI免费生成文字,打造创作新时代
SEO元素-提升网站排名的核心要素,推广分成网站有哪些
SEO公司核心业务是什么?揭秘提升网站排名的奥秘,写作助手ai一键生成作文在线
seo的推广工具,seo推广软件哪个好 ,国内ai写作论文怎么样
ChatGPT为什么打不开?背后原因与解决方案,慧ai写作
为什么说seo这么重要,seo重要吗 ,ai19920403
专业关键词助力SEO优化,让你的内容脱颖而出,东营响应式网站优化
SEO才能:提升网站排名,突破网络营销的核心竞争力,南宁本地seo营销公司
SEO优化如何进行:提升网站排名,轻松超越竞争对手,ai写作怎么操作手机
ChatGPT手机下载后打不开?可能是这些问题导致的,解决方法在这里!,孤城ai动画
ChatGDP人工智能:未来科技赋能企业与个人的智能变革,如何用AI绘制人体
SEO怎么排名?这5大技巧,轻松提升网站排名,人人都可ai
“赞片CMS”-让你的*站点管理更高效、便捷,日照seo平台
ChatGPT付款被拒?如何应对与解决常见支付问题,掉包ai
《*采集站:带你领略全球最全*资源的宝藏平台》,seo优化易下拉瞧瞧
360AI写作怎样?助力创作的新风尚,ai到访
AI搜索相似文章怎么做?揭秘高效文章检索的核心技术!,程式ai软件
SEO如何做?全方位解析提升网站排名的秘诀,AI翻译好处
ChatGPT使用问题?如果您正在使用VPN,请尝试将其关闭,ai制作渐变立体
GPT优化:让你的工作与生活更高效、更智能,Ai__79
优化提长:让企业效能提升的秘密武器,长沙网站建设创意
AI人工智能:开发与应用的必备软件推荐
SEO基础知识解析:如何提升网站排名,助力企业成长,毕节企业建设网站
seo种草什么意思,seo yoo na ,三维地震反演AI
AI免费写文章:让创作变得轻松高效
SEO客服:如何提升客户体验与业务转化的双赢策略,鄂州网站建设公司教程
AI免费工具:提升效率与创意的秘密武器
SEO优化:如何让网站更具有吸引力,散文ai写作咒语是什么
云推SEO:让您的网站在激烈竞争中脱颖而出,网站优化公司欢迎来电
“新关键词”开启智慧营销新篇章,助力品牌突围,自己如何做网站seo
ChatGPT安装包Windows版:让AI助力你的工作与生活,人工智能ai不是梦在线
zblog站群,zblog怎么样 ,欧卡2ai汽车如何使用
好用的人工智能AI软件推荐,让你的生活更智能!
SEO监控:精准把握网站排名与优化成效的利器,湖南seo排名商家名单
一秒采集:提升效率、创造价值的秘密武器,苏州网站整站优化
SEO学堂:开启数字营销新时代,全面提升网站排名与流量,文山ai营销推广方案
内容创作新时代:自动生成文章的AI如何改变写作生态
ChatGPT网页打不开?快来看看这些解决办法,轻松恢复正常访问!,ai金色包装
ChatGPT您的应用遇到问题,无法正常启动?如何解决并重新体验智能助手的魅力!,男头ai关键词
ChatGPT昨晚突然不能使用,背后真相令人意想不到!,edga ai
SEO阶段解析:从入门到精通,助你站稳搜索引擎的前沿,网站建设特定开发
SEO提供:如何通过精准的SEO策略提升网站流量与品牌影响力,刷关键词排名立的火星
AI文章概括缩写:让内容高效获取的智能工具,ai 处理文件
SEO爱站:提升网站排名,赢得流量的秘密武器,优化网站设计价格多少
seo都有什么问题,seo都有什么问题和答案 ,ai凯旋公主下载
WPJam:打破网站管理的壁垒,打造极致用户体验,广东谷歌seo工具