首页 > web前端 > js教程 > 正文

javascript如何定义变量_有哪些作用域规则

幻影之瞳
发布: 2025-12-16 20:13:02
原创
281人浏览过
JavaScript变量声明推荐用const和let,避免var;const声明常量(引用不可变),let声明可变变量,均具块级作用域;var具函数作用域且存在变量提升,易引发问题。

javascript如何定义变量_有哪些作用域规则

JavaScript 定义变量主要用 letconst 和(不推荐的)var作用域规则核心是:块级作用域(let/const)和函数作用域(var),全局作用域也存在但需谨慎使用。

三种声明方式的区别

let:块级作用域,可重新赋值,不能重复声明,不存在变量提升(暂时性死区)。

const:块级作用域,声明后必须初始化,不能重新赋值(注意:对象/数组内容仍可修改,只是引用不可变)。

var:函数作用域(或全局作用域),可重复声明,存在变量提升(声明被提升,赋值不提升),易引发意外行为,现代代码应避免使用。

立即学习Java免费学习笔记(深入)”;

作用域层级与查找规则(词法作用域)

JavaScript 采用词法作用域,即作用域在代码编写时就确定,而非运行时。

  • 最内层作用域(如函数体、if 块、for 块)优先访问自身声明的变量
  • 找不到则向外层作用域逐级查找,直到全局作用域
  • 找不到且未声明就赋值(非严格模式)会自动挂到全局对象(如 window),严格模式下报错 ReferenceError

常见作用域场景示例

// 块级作用域(let/const 有效)

if (true) {

let x = 10;

const y = 20;

}

// console.log(x); // 报错:x is not defined

// console.log(y); // 报错:y is not defined

AI Code Reviewer
AI Code Reviewer

AI自动审核代码

AI Code Reviewer 112
查看详情 AI Code Reviewer

// var 在 if 中声明会“逃逸”到函数或全局作用域

// 函数作用域(var 的典型表现)

function test() {

if (true) {

var z = 30;

}

console.log(z); // 30 —— z 可在整函数内访问

}

全局与模块作用域

浏览器中,顶层(非函数内)用 let/const 声明的变量不会成为 window 的属性;而 var 声明的会(在全局上下文)。

ES6 模块(.mjstype="module" 的 script)有独立的模块作用域,顶层声明不会污染全局,即使不用 let/const 也是模块私有。

基本上就这些。记住:默认用 const,需要重赋值时换 let,彻底告别 var,就能避开大部分作用域陷阱。

以上就是javascript如何定义变量_有哪些作用域规则的详细内容,更多请关注php中文网其它相关文章!

java速学教程(入门到精通)
java速学教程(入门到精通)

java怎么学习?java怎么入门?java在哪学?java怎么学才快?不用担心,这里为大家提供了java速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号