【JavaScript】作用域

举报
黑城笑 发表于 2022/04/26 00:29:44 2022/04/26
【摘要】 作用域在ES2015前,js只有两种类型的作用域:全局作用域和函数作用域,而在ES2015引入了一个重要的新关键词:let 块作用域在块{}内用var声明的变量没有块作用域,可在全局使用而在块{}内使用let关键词声明的变量无法在块外部进行访问{ let name = "黑城笑";}//无法在块外使用name 全局作用域声明在函数以外的变量,可在全局进行调用var name="黑城笑";f...

作用域

在ES2015前,js只有两种类型的作用域:全局作用域和函数作用域,而在ES2015引入了一个重要的新关键词:let

块作用域

在块{}内用var声明的变量没有块作用域,可在全局使用
而在块{}内使用let关键词声明的变量无法在块外部进行访问

{
	let name = "黑城笑";
}
//无法在块外使用name

全局作用域

声明在函数以外的变量,可在全局进行调用

var name="黑城笑";
function nFuction():
{
	//可调用name
}

在外部使用let声明后再在块内或函数内重新声明变量不会改变在外部let所声明变量的值

let name = "黑城笑";
if (name=="黑城笑")
{
	let name = "wallace";
    document.write(name+"<br>");
}
document.write(name);

js的全局作用域是js环境,而HTML的全局作用域是windows对象,即通过var定义的全局变量属于window对象,可以使用window方法对其进行调用

函数作用域

在函数内部定义的变量,仅能在函数内使用

function nFuction():
{
	var name="黑城笑";
}
//无法调用name

在函数内使用let对变量进行声明同var的作用一样

提升

通过var声明的变量将会提升到顶端,即在HTML中可以在声明之前调用变量
反之,通过let声明的变量无法提升到顶端,即无法在HTML中在声明之前调用let所声明的变量

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。