Let JavaScript

ECMAScript 2015

ECMAScript 2015 memperkenalkan dua kunci penting baru di JavaScript:letconst.

Kunci ini menyediakan area pengaruh blok di JavaScript (Block Scope) variabel (dan konstanta).

Sebelum ES2015, JavaScript hanya memiliki dua jenis area pengaruh:全局作用域函数作用域.

全局作用域

GlobalVariabel yang dideklarasikan (di luar fungsi)全局作用域.

Contoh

var carName = "porsche";
// kode di tempat ini dapat menggunakan carName
function myFunction() {
  // kode di tempat ini JUGA dapat menggunakan carName
}

Coba Sendiri

GlobalVariabel dapat diakses di setiap tempat di program JavaScript.

函数作用域

LokalVariabel yang dideklarasikan (dalam fungsi)函数作用域.

Contoh

// kode di tempat ini tidak dapat menggunakan carName
function myFunction() {
  var carName = "porsche";
  // kode di tempat ini BISA menggunakan carName
}
// kode di tempat ini tidak dapat menggunakan carName

Coba Sendiri

LokalVariabel hanya dapat diakses di dalam fungsi tempat mereka dideklarasikan.

Area pengaruh blok JavaScript

melakukan var Variabel yang dideklarasikan dengan kunci tidak memilikiArea pengaruh.

Dalam blok {} Variabel yang dideklarasikan didalam blok dapat diakses dari luar blok.

Contoh

{ 
  var x = 10; 
}
// di tempat ini dapat digunakan x

Sebelum ES2015, JavaScript tidak memiliki area pengaruh blok.

Dapat digunakan let Kunci deklarasi memiliki area pengaruh blok.

Dalam blok {} Variabel yang dideklarasikan didalam blok tidak dapat diakses dari luar blok:

Contoh

{ 
  let x = 10;
}
// di tempat ini tidak dapat digunakan x

Deklarasi ulang variabel

Penggunaan var Kunci deklarasi ulang variabel dapat membawa masalah.

Mengulang deklarasi variabel di dalam blok juga akan mengulang deklarasi variabel di luar blok:

Contoh

var x = 10;
// di tempat ini x adalah 10
{ 
  var x = 6;
  // di tempat ini x adalah 6
}
// di tempat ini x adalah 6

Coba Sendiri

Penggunaan let Kunci deklarasi ulang variabel dapat memecahkan masalah ini.

Mengulang deklarasi variabel di dalam blok tidak akan mengulang deklarasi variabel di luar blok:

Contoh

var x = 10;
// di tempat ini x adalah 10
{ 
  let x = 6;
  // di tempat ini x adalah 6
}
// di tempat ini x adalah 10

Coba Sendiri

Dukungan browser

Internet Explorer 11 atau versi yang lebih awal tidak mendukung sepenuhnya let kunci.

Tabel di bawah mendefinisikan yang pertama sepenuhnya mendukung let Versi browser kunci:

Chrome 49 IE / Edge 12 Firefox 44 Safari 11 Opera 36
2016 年 3 月 2015 年 7 月 2015 年 1 月 2017 年 9 月 2016 年 3 月

循环作用域

在循环中使用 var

Contoh

var i = 7;
for (var i = 0; i < 10; i++) {
  // 一些语句
}
// 此处,i 为 10

Coba Sendiri

在循环中使用 let

Contoh

let i = 7;
for (let i = 0; i < 10; i++) {
  // 一些语句
}
// 此处 i 为 7

Coba Sendiri

在第一个例子中,在循环中使用的变量使用 var 重新声明了循环之外的变量。

在第二个例子中,在循环中使用的变量使用 let 并没有重新声明循环外的变量。

如果在循环中用 let 声明了变量 i,那么只有在循环内,变量 i 才是可见的。

函数作用域

在函数内声明变量时,使用 varlet 很相似。

它们都有函数作用域

function myFunction() {
  var carName = "porsche";   // 函数作用域
}
function myFunction() {
  let carName = "porsche";   // 函数作用域
}

全局作用域

如果在块外声明声明,那么 varlet 也很相似。

它们都拥有全局作用域

var x = 10;       // 全局作用域
let y = 6;       // 全局作用域

HTML 中的全局变量

使用 JavaScript 的情况下,全局作用域是 JavaScript 环境。

在 HTML 中,全局作用域是 window 对象。

melakukan var 关键词定义的全局变量属于 window 对象:

Contoh

var carName = "porsche";
// 此处的代码可使用 window.carName

Coba Sendiri

melakukan let 关键词定义的全局变量不属于 window 对象:

Contoh

let carName = "porsche";
// 此处的代码不可使用 window.carName

Coba Sendiri

重新声明

允许在程序的任何位置使用 var 重新声明 JavaScript 变量:

Contoh

var x = 10;
// 现在,x 为 10
var x = 6;
// 现在,x 为 6

Coba Sendiri

di lingkungan yang sama, atau di blok yang sama, melalui let Pengdeklarasian ulang var Variabel adalah tidak diperbolehkan:

Contoh

var x = 10;       // 允许
let x = 6;       // 不允许
{
  var x = 10;   // 允许
  let x = 6;   // 不允许
}

di lingkungan yang sama, atau di blok yang sama, melalui let Pengdeklarasian ulang let Variabel adalah tidak diperbolehkan:

Contoh

let x = 10;       // Diperbolehkan
let x = 6;       // 不允许
{
  let x = 10;   // Diperbolehkan
  let x = 6;   // 不允许
}

di lingkungan yang sama, atau di blok yang sama, melalui var Pengdeklarasian ulang let Variabel adalah tidak diperbolehkan:

Contoh

let x = 10;       // Diperbolehkan
var x = 6;       // Tidak diperbolehkan
{
  let x = 10;   // Diperbolehkan
  var x = 6;   // Tidak diperbolehkan
}

dalam lingkungan yang berbeda atau blok melalui let Pengdeklarasian ulang variabel diperbolehkan:

Contoh

let x = 6;       // Diperbolehkan
{
  let x = 7;   // Diperbolehkan
}
{
  let x = 8;   // Diperbolehkan
}

Coba Sendiri

Penyangkalan

melakukan var Deklarasi variabel akanPenyangkalandi atas. Jika Anda tidak mengerti apa penyangkalan (Hoisting), silakan belajar bab penyangkalan kami.

Anda dapat menggunakan variabel variabel sebelum deklarasinya:

Contoh

// Di sini, Anda dapat menggunakan carName
var carName;

Coba Sendiri

melakukan let Variabel yang didefinisikan tidak akan diangkat ke atas. Dengan cara

di deklarasikan let Penggunaan variabel sebelum deklarasinya akan menyebabkan ReferenceError.

Variabel tetap berada di 'daerah mati sementara' dari awal blok sampai deklarasinya:

Contoh

// Di sini, Anda tidak dapat menggunakan carName
let carName;