
openai.chatcompletion.create用法和圖片鏈接詳解
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
變量僅在 if
塊內可見,這使得代碼更安全。
const
用于聲明常量,意味著一旦賦值就不能再更改。與 let
一樣,const
也有塊作用域。
const PI = 3.14;
// PI = 3.14159; // TypeError: Assignment to constant variable.
const
常用于需要保持不變的數據,比如數學常量。
在 JavaScript 中,函數本質上也是變量,可以通過多種方式聲明和使用。
function add(a, b) {
return a + b;
}
let sum = add(2, 3);
console.log(sum); // 輸出 5
使用函數聲明可以在代碼中靈活使用函數,提高代碼的復用性。
import
是 JavaScript 模塊系統的一部分,用于從其他模塊引入變量或函數。
import { add } from './math.js';
let result = add(5, 7);
console.log(result); // 輸出 12
模塊化讓代碼更具組織性和可維護性。
class
是 ES6 引入的類聲明方式,提供了一種更接近面向對象編程的語法。
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();
使用類可以更容易地創建和管理對象。
全局變量是在函數外部聲明的,可以在任何地方訪問,而局部變量只在其所在的函數或塊內有效。
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
理解變量的作用域對于避免命名沖突和意外行為至關重要。
JavaScript 的變量提升特性會將變量聲明提升到作用域的頂部,但賦值不會提升。
console.log(name); // 輸出 undefined
var name = 'Alice';
上面的代碼等同于:
var name;
console.log(name); // 輸出 undefined
name = 'Alice';
在使用 let
或 const
時,變量存在一個所謂的“暫時性死區”,在變量聲明之前訪問會導致錯誤。
if (true) {
// console.log(temp); // ReferenceError
let temp = 'Temporal';
console.log(temp); // 輸出 'Temporal'
}
這種特性有助于捕捉潛在的錯誤。
JavaScript 的函數作用域和塊作用域分別對應 var
和 let
/const
的行為。
function testVar() {
var x = 1;
if (true) {
var x = 2; // 同一個變量
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();
答:變量提升是 JavaScript 的一個特性,它會將變量聲明提升到作用域的頂部,因此可以在變量聲明之前使用它們,但值為 undefined
。
let
和 const
有什么區別?答:let
用于聲明可變變量,而 const
用于聲明不可變的常量。const
聲明的變量必須立即初始化,且不能再被賦值。
答:可以通過使用立即執行函數表達式(IIFE)或模塊化來限制變量的作用域,避免全局變量污染。
答:JavaScript 中主要有全局作用域、函數作用域和塊作用域。
var
、let
和 const
的作用域有什么不同?答:var
是函數作用域,let
和 const
是塊作用域。