let

let 是 ES6 引入的一種聲明變量的方式,解決了 var 的一些問題。let 聲明的變量有塊作用域,避免了變量提升帶來的困擾。

let count = 10;
if (count > 5) {
  let message = 'Count is greater than 5';
  console.log(message);
}
// console.log(message); // ReferenceError: message is not defined

在上面的例子中,message 變量?jī)H在 if 塊內(nèi)可見,這使得代碼更安全。

let 變量示例

const

const 用于聲明常量,意味著一旦賦值就不能再更改。與 let 一樣,const 也有塊作用域。

const PI = 3.14;
// PI = 3.14159; // TypeError: Assignment to constant variable.

const 常用于需要保持不變的數(shù)據(jù),比如數(shù)學(xué)常量。

const 常量示例

函數(shù)聲明與變量

function

在 JavaScript 中,函數(shù)本質(zhì)上也是變量,可以通過多種方式聲明和使用。

function add(a, b) {
  return a + b;
}

let sum = add(2, 3);
console.log(sum); // 輸出 5

使用函數(shù)聲明可以在代碼中靈活使用函數(shù),提高代碼的復(fù)用性。

function 示例

import

import 是 JavaScript 模塊系統(tǒng)的一部分,用于從其他模塊引入變量或函數(shù)。

import { add } from './math.js';
let result = add(5, 7);
console.log(result); // 輸出 12

模塊化讓代碼更具組織性和可維護(hù)性。

import 模塊示例

class

class 是 ES6 引入的類聲明方式,提供了一種更接近面向?qū)ο缶幊痰恼Z法。

class Car {
  constructor(make, model) {
    this.make = make;
    this.model = model;
  }

  display() {
    console.log(Car: ${this.make} ${this.model});
  }
}

let myCar = new Car('Toyota', 'Corolla');
myCar.display();

使用類可以更容易地創(chuàng)建和管理對(duì)象。

class 類示例

變量作用域與提升

全局變量與局部變量

全局變量是在函數(shù)外部聲明的,可以在任何地方訪問,而局部變量只在其所在的函數(shù)或塊內(nèi)有效。

var globalVar = 'I am global';

function localScope() {
  var localVar = 'I am local';
  console.log(globalVar); // 可以訪問
  console.log(localVar);  // 可以訪問
}

localScope();
// console.log(localVar); // ReferenceError: localVar is not defined

理解變量的作用域?qū)τ诒苊饷麤_突和意外行為至關(guān)重要。

變量作用域示例

變量提升

JavaScript 的變量提升特性會(huì)將變量聲明提升到作用域的頂部,但賦值不會(huì)提升。

console.log(name); // 輸出 undefined
var name = 'Alice';

上面的代碼等同于:

var name;
console.log(name); // 輸出 undefined
name = 'Alice';

變量提升示例

代碼塊與函數(shù)作用域

暫時(shí)性死區(qū)

在使用 letconst 時(shí),變量存在一個(gè)所謂的“暫時(shí)性死區(qū)”,在變量聲明之前訪問會(huì)導(dǎo)致錯(cuò)誤。

if (true) {
  // console.log(temp); // ReferenceError
  let temp = 'Temporal';
  console.log(temp); // 輸出 'Temporal'
}

這種特性有助于捕捉潛在的錯(cuò)誤。

暫時(shí)性死區(qū)示例

函數(shù)作用域與塊作用域

JavaScript 的函數(shù)作用域和塊作用域分別對(duì)應(yīng) varlet/const 的行為。

function testVar() {
  var x = 1;
  if (true) {
    var x = 2;  // 同一個(gè)變量
    console.log(x);  // 輸出 2
  }
  console.log(x);  // 輸出 2
}

testVar();

function testLet() {
  let y = 1;
  if (true) {
    let y = 2;  // 新的變量
    console.log(y);  // 輸出 2
  }
  console.log(y);  // 輸出 1
}

testLet();

函數(shù)與塊作用域示例

FAQ

問:什么是 JavaScript 中的變量提升?

答:變量提升是 JavaScript 的一個(gè)特性,它會(huì)將變量聲明提升到作用域的頂部,因此可以在變量聲明之前使用它們,但值為 undefined。

問:letconst 有什么區(qū)別?

答:let 用于聲明可變變量,而 const 用于聲明不可變的常量。const 聲明的變量必須立即初始化,且不能再被賦值。

問:如何避免全局變量污染?

答:可以通過使用立即執(zhí)行函數(shù)表達(dá)式(IIFE)或模塊化來限制變量的作用域,避免全局變量污染。

問:JavaScript 中的作用域有哪些類型?

答:JavaScript 中主要有全局作用域、函數(shù)作用域和塊作用域。

問:var、letconst 的作用域有什么不同?

答:var 是函數(shù)作用域,letconst 是塊作用域。

上一篇:

訊飛星火大模型免費(fèi)嗎?全面解析其功能與版本

下一篇:

INTERSECT 意味和應(yīng)用
#你可能也喜歡這些API文章!

我們有何不同?

API服務(wù)商零注冊(cè)

多API并行試用

數(shù)據(jù)驅(qū)動(dòng)選型,提升決策效率

查看全部API→
??

熱門場(chǎng)景實(shí)測(cè),選對(duì)API

#AI文本生成大模型API

對(duì)比大模型API的內(nèi)容創(chuàng)意新穎性、情感共鳴力、商業(yè)轉(zhuǎn)化潛力

25個(gè)渠道
一鍵對(duì)比試用API 限時(shí)免費(fèi)

#AI深度推理大模型API

對(duì)比大模型API的邏輯推理準(zhǔn)確性、分析深度、可視化建議合理性

10個(gè)渠道
一鍵對(duì)比試用API 限時(shí)免費(fèi)