Louis's blog
GitHub
GitHub
  • 瀏覽器運作原理
  • 閉包
  • this
  • arguments 和 array-like
  • apply、call、bind
  • 函式程式設計
  • 物件和原型
  • 原型鏈和繼承
  • ES6 和 Class
  • ES6 中新增的數據類型
  • ES6 語法糖
  • var、let、const
  • ES7~ES12
  • Strict Mode
  • 補充
  • Proxy 和 Reflect
  • Promise
  • Iterator
  • 生成器
  • async、await
  • Event loop
  • 錯誤處理
  • 模塊化
  • 套件管理工具
  • JSON
  • WebStorage
  • IndexDB
  • Cookie
  • BOM
  • DOM
  • 防抖(debounce)和節流(throttle)
  • Deep copy
  • 事件總線

補充

Eval

eval 是一個特殊的函數,可以將傳入的字符串當作 JavaScript 程式碼來運行。

var str = 'var message = "Hello World"; console.log(message);'

eval(str)

console.log(message)

不建議使用的原因如下:

  • eval 程式碼的可讀性非常差,因為是一連串的字符串。
  • eval 是執行字符串,如果該字符串是從服務器獲取,非常容易被竄改而造成危險。
  • 通過 eval 函數並不會經過 js 引擎優化,效能較差。

With

with 語句是一種比較少見的 JavaScript 語法,由於其特殊性現在大多數時候已經不太推薦於使用了,並且在嚴格模式下 with 語句是無法運作的。

透過 with 語句,能夠指定某個物件做為內部變數查找的作用域:

var obj = {
  message: 'Hello Obj'
}

function bar() {
  with (obj) {
    console.log(message)
  }
}
bar()

上面這個案例中 bar 函數中將 obj 指定為作用域,就會優先從 obj 這個物件中進行查找 message 這個變數,所以最終的輸出解果為:

Hello Obj
Edit this page
Last Updated:
Contributors: louis, louis61619
Prev
Strict Mode
Next
Proxy 和 Reflect