js-with帶來的性能問題測試

分別運行下面兩段代碼

  • 使用with的時候:test__time: 390.218ms
 const obj = { cunt: 122 };
  function test_with() {
    with (obj) {
      for (let i = 0; i < 1e6; i++) {
        cunt = 100;
        a = 0;
      }
    }
    console.log(a);
    console.log(obj.cunt);
  }
console.time("test___start");
test_with();
console.timeEnd("test___start");//test___start: 390.218ms
  • 不用with的時候:test__time: 6.668ms
  const obj = { cunt: 122 };
function test_with() {
  for (let i = 0; i < 1e6; i++) {
    obj.cunt = 100;
    a = 0;
  }
  console.log(a);
  console.log(obj.cunt);
}
console.time("test___start");
test_with();
console.timeEnd("test___start"); //test___start: 6.668ms

對比耗時 明顯with耗時更久,盡量不使用with

with(object){
  statement;
}
  • 總結一下:with會把object添加到作用域的頭部,然后執(zhí)行statement,與eval類似,with語句的javascript代碼非常難于優(yōu)化,同時也會給調(diào)試代碼造成困難,并且同沒有使用with語句的代碼相比,它運算得更慢.
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

  • 第2章 基本語法 2.1 概述 基本句法和變量 語句 JavaScript程序的執(zhí)行單位為行(line),也就是一...
    悟名先生閱讀 4,560評論 0 13
  • 關于Mongodb的全面總結 MongoDB的內(nèi)部構造《MongoDB The Definitive Guide》...
    中v中閱讀 32,305評論 2 89
  • 今天在張老師的課堂上,又玩了一個有趣的游戲——巧運氣球。 張老師給我們講了一下游戲規(guī)則,游戲開始了。隊友...
    新啟航張老師閱讀 312評論 0 0
  • 谷雨夜風入鄉(xiāng)里,花落知多少? 朦朧不知身是客,幸把伊人邀, 師苑月色溫如故,今晚更妖嬈, 夢醒時分忙追憶,曾經(jīng)很美...
    陳五道閱讀 252評論 0 1
  • 晚上快八點開始看《為奴十二年》,中間接了一個四十多分鐘的長途電話,到大約十一點才看完電影。看完后上網(wǎng)查,原來這是真...
    明光照耀閱讀 829評論 0 0

友情鏈接更多精彩內(nèi)容