let、const、var 和作用域

2023-05-27 0 1,056

新闻稿两个表达式时有四个可选配的URL:

let:新闻稿两个表达式。const:新闻稿两个不容发生改变的表达式,又称作自变量。var:新闻稿两个表达式,早已落伍的URL不所推荐采用。

警示:var 是两个落伍的URL,早已不推荐采用。

let

下列是 letconst 共计的优点。

出访要在新闻稿后

alert(name) // Cannot access name before initialization let name = “佐助”

不容许再次新闻稿

let name = “佐助” let name = “宁次” // Identifier name has already been declared

const

const 在犯罪行为上与 let是完全一致的,惟一相同是新闻稿表达式后不能被发生改变:

const name = “佐助” name = “宁次” // Assignment to constant variable.

但假如 const是两个第一类,那它里头的值则是能发生改变的:

const person = { name: “佐助”, } person.name = “宁次” alert(person.name) // 宁次

返回值

在返回值上 letconst 的犯罪行为是完全完全一致的,而 var 则略有相同,这点在稍后的章节中会介绍。

提示:

很多教程会区分下列名词,但我觉得早已无需区分返回值类型了,反而会增加学习复杂度。

全局采用域:最外层的返回值,定义的表达式能在任何地方被出访。块级返回值:非函数的大括号内的返回值,例如 if、while、for 等。函数返回值:函数内的返回值。

返回值指的是表达式所能被出访的区域,每个大括号(代码块)都能产生两个新的返回值,内层返回值能出访外层返回值内的表达式,而反之则不行。

let name = “佐助” { alert(name) // ok let age = 20 } alert(age) // age is not defined

因为此时以上的代码内有两个返回值如下图所示,内层返回值能出访外层返回值定义的 name ,而外层返回值无法出访内层返回值定义的 age

let、const、var 和作用域

image.png

提示:现在的编辑器都有对代码块的缩进,方便我们区分。

同理,下列代码中 for 循环也属于代码块,因此 i 也不能被外层返回值出访。

for (let i = 0; i < 5; i++) { console.log(i) } console.log(i)// i is not defined

返回值能避免出现表达式出访混乱的情况,能在各返回值间定义表达式而不会出现冲突,也不用担心有没有不小心覆盖其他返回值内的表达式。

let name = “佐助” function sayHello() { let name = “路飞” alert(`${name},你好~`) } sayHello() // 路飞,你好~ alert(name) // 佐助

var

尽管 var 已不被所推荐采用,但在阅读早期的代码文件时仍能看见它的身影。因此下列内容能根据需求选学,

varlet 有下列相同点。

没有块级返回值

var无法在块内(if、while、for、纯大括号)起返回值的作用,只能在函数内起作用。

if (true) { // 没有块级返回值 var title = “三眼鸭的编程教室” } alert(title) // 三眼鸭的编程教室,仍然能出访

容许再次新闻稿

let在同个返回值内只容许新闻稿一次,而var 则能多次新闻稿,后新闻稿的则会覆盖之前新闻稿的。

$$jsdemo$$ $$edit$$ var name = “佐助” var name = “路飞” alert(name) // 路飞 let age = 18 let age = 20 // Identifier age has already been declared

表达式提升

var 新闻稿的表达式,能在新闻稿前被采用。

function sayHello() { // var word,被隐性提升到开头 word = “你好~” alert(word) var word } sayHello() // 你好~

相关文章

发表评论
暂无评论
官方客服团队

为您解决烦忧 - 24小时在线 专业服务