Let wa JavaScript
- Tusome hivi JS Matokeo
- Tusome hivi JS Const
ECMAScript 2015
ECMAScript 2015 inakua kichwa cha jina mbili kwa matumizi ya JavaScript:let
和 const
.
Kichwa cha jina hizi inaofaa uwanja wa kina kirefu (Block Scope) inasikitisha (na kichwa cha jina).
Kwenye ES2015 hadi sasa, JavaScript ina ufupi wa uwanja wa kina kirefu mbili:全局作用域和函数作用域.
全局作用域
Uwanja wa kina kirefuKina kirefu ina kina kirefu ina inasikitisha全局作用域.
Mifano
var carName = "porsche"; // hapa kwaandikiwa inaweza kutumika carName function myFunction() { // hapa kwaandikiwa kwaandikiwa inaweza kutumika carName }
Uwanja wa kina kirefuInasikitisha inaweza kutumika kwenye eneo wote wa programu ya JavaScript
函数作用域
Kina kirefuKina kirefu ina kina kirefu ina inasikitisha函数作用域.
Mifano
// hapa kwaandikiwa hauweza kutumika carName function myFunction() { var carName = "porsche"; // code hapa CAN kutumika carName } // hapa kwaandikiwa hauweza kutumika carName
Kina kirefuInasikitisha inaweza kutumika kwenye funiki ambayo ina inasikitisha
Uwanja wa kina kirefu wa JavaScript
kwa var
Inasikitisha ya kichwa cha ujaribu kina kirefu ina uwanja wa kina kirefuUwanja.
Kina kirefu {} Inasikitisha ya kina kirefu inaweza kutumika kwenye kina kirefu kina kirefu kina kirefu
Mifano
{ var x = 10; } // hapa hauweza kutumika x
Kwenye ES2015 hadi sasa, JavaScript haikuhadhi uwanja wa kina kirefu
Kutumika let
Kichwa cha ujaribu kina kirefu kinasababisha uwanja wa kina kirefu
Kina kirefu {} Inasikitisha ya kina kirefu hauwezi kutumika kwenye kina kirefu kina kirefu
Mifano
{ let x = 10; } // hapa hauweza kutumika x
Kumekadiri kirefu kina kirefu
Kuwasiliana na var
Kichwa cha ujaribu kirefu kina kirefu kinatoa matokeo ya matukio.
Kumekadiri kirefu kina kirefu hali ya kina kirefu kinachukua kirefu kina kirefu kina kirefu
Mifano
var x = 10; // hapa x ni 10 { var x = 6; // hapa x ni 6 } // hapa x ni 6
Kuwasiliana na let
Kichwa cha ujaribu kirefu kina kirefu kinatoa hatua hii.
Kumekadiri kirefu kina kirefu hali ya kina kirefu haikuchukua kirefu kina kirefu kina kirefu
Mifano
var x = 10; // hapa x ni 10 { let x = 6; // hapa x ni 6 } // hapa x ni 10
Muhtasari wa vifungu wa vifungu
Internet Explorer 11 au na kuzingatia vifungu vya zamani hawana inasaa kidogo let
Muhtasari.
Tafanoni hii inadefini ya kwanza inasaa let
Muhtasari wa muundo wa vifungu:
Chrome 49 | IE / Edge 12 | Firefox 44 | Safari 11 | Opera 36 |
2016 年 3 月 | 2015 年 7 月 | 2015 年 1 月 | 2017 年 9 月 | 2016 年 3 月 |
循环作用域
在循环中使用 var
:
Mifano
var i = 7; for (var i = 0; i < 10; i++) { // 一些语句 } // 此处,i 为 10
在循环中使用 let
:
Mifano
let i = 7; for (let i = 0; i < 10; i++) { // 一些语句 } // 此处 i 为 7
在第一个例子中,在循环中使用的变量使用 var
重新声明了循环之外的变量。
在第二个例子中,在循环中使用的变量使用 let
并没有重新声明循环外的变量。
如果在循环中用 let
声明了变量 i,那么只有在循环内,变量 i 才是可见的。
函数作用域
在函数内声明变量时,使用 var
和 let
很相似。
它们都有函数作用域:
function myFunction() { var carName = "porsche"; // 函数作用域 } function myFunction() { let carName = "porsche"; // 函数作用域 }
全局作用域
如果在块外声明声明,那么 var
和 let
也很相似。
它们都拥有全局作用域:
var x = 10; // 全局作用域 let y = 6; // 全局作用域
HTML 中的全局变量
使用 JavaScript 的情况下,全局作用域是 JavaScript 环境。
在 HTML 中,全局作用域是 window 对象。
kwa var
关键词定义的全局变量属于 window 对象:
Mifano
var carName = "porsche"; // 此处的代码可使用 window.carName
kwa let
关键词定义的全局变量不属于 window 对象:
Mifano
let carName = "porsche"; // 此处的代码不可使用 window.carName
重新声明
允许在程序的任何位置使用 var
重新声明 JavaScript 变量:
Mifano
var x = 10; // 现在,x 为 10 var x = 6; // 现在,x 为 6
kwenye eneo la kina la hivi karibuni, au kwenye kina la hivi karibuni, kwa let
Kurehasisha matokeo yenye jina kwenye var
Matokeo hayana:
Mifano
var x = 10; // wafadhali let x = 6; // hatarika { var x = 10; // wafadhali let x = 6; // hatarika }
kwenye eneo la kina la hivi karibuni, au kwenye kina la hivi karibuni, kwa let
Kurehasisha matokeo yenye jina kwenye let
Matokeo hayana:
Mifano
let x = 10; // Inaruhusiwa let x = 6; // hatarika { let x = 10; // Inaruhusiwa let x = 6; // hatarika }
kwenye eneo la kina la hivi karibuni, au kwenye kina la hivi karibuni, kwa var
Kurehasisha matokeo yenye jina kwenye let
Matokeo hayana:
Mifano
let x = 10; // Inaruhusiwa var x = 6; // Hatuna uharibifu { let x = 10; // Inaruhusiwa var x = 6; // Hatuna uharibifu }
kwenye eneo la kina la tofauti au kwenye kina la kina, kwa let
Kurehasisha matokeo yenye jina hauwezi kurehasishwa:
Mifano
let x = 6; // Inaruhusiwa { let x = 7; // Inaruhusiwa } { let x = 8; // Inaruhusiwa }
Kina ya kina
kwa var
Matokeo ya kina iliyofikia inaKina ya kinakwenye eneo la kina la juu. Ikiwa hatuwezi kufahamu kina ya kina (Hoisting), tafadhali nia sio chapu hili.
Tunaweza kutumia matokeo kwenye kina hadi kufikia uafikishaji:
Mifano
// Hapa, tunaweza kutumia carName var carName;
kwa let
Matokeo ya kina iliyofikia inahifadhiwa kwenye eneo la kina la juu.
kwenye uafikishaji let
kutumia matokeo kwenye kina hali yake ya kina ya kina inaweza kutokea ReferenceError.
Matokeo ya kina ya eneo la kina hauwezi kutumika hadi kufikia uafikishaji:
Mifano
// Hapa, hatuwezi kutumia carName let carName;
- Tusome hivi JS Matokeo
- Tusome hivi JS Const