新闻稿两个表达式时有四个可选配的URL:
let:新闻稿两个表达式。const:新闻稿两个不容发生改变的表达式,又称作自变量。var:新闻稿两个表达式,早已落伍的URL不所推荐采用。警示:var 是两个落伍的URL,早已不推荐采用。
let
下列是 let 与 const 共计的优点。
出访要在新闻稿后
alert(name) // Cannot access name before initialization let name = “佐助”不容许再次新闻稿
let name = “佐助” let name = “宁次” // Identifier name has already been declaredconst
const 在犯罪行为上与 let是完全一致的,惟一相同是新闻稿表达式后不能被发生改变:
const name = “佐助” name = “宁次” // Assignment to constant variable.但假如 const是两个第一类,那它里头的值则是能发生改变的:
const person = { name: “佐助”, } person.name = “宁次” alert(person.name) // 宁次返回值
在返回值上 let 与 const 的犯罪行为是完全完全一致的,而 var 则略有相同,这点在稍后的章节中会介绍。
提示:
很多教程会区分下列名词,但我觉得早已无需区分返回值类型了,反而会增加学习复杂度。
全局采用域:最外层的返回值,定义的表达式能在任何地方被出访。块级返回值:非函数的大括号内的返回值,例如 if、while、for 等。函数返回值:函数内的返回值。返回值指的是表达式所能被出访的区域,每个大括号(代码块)都能产生两个新的返回值,内层返回值能出访外层返回值内的表达式,而反之则不行。
let name = “佐助” { alert(name) // ok let age = 20 } alert(age) // age is not defined因为此时以上的代码内有两个返回值如下图所示,内层返回值能出访外层返回值定义的 name ,而外层返回值无法出访内层返回值定义的 age 。
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 已不被所推荐采用,但在阅读早期的代码文件时仍能看见它的身影。因此下列内容能根据需求选学,
var 与 let 有下列相同点。
没有块级返回值
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() // 你好~