0,eval this 與eval的區別

2022-07-17 12:48:14 字數 407 閱讀 3397

看dot原始碼的時候,看到了這麼一句**:

global = (function()());

global.dot = dot;

需要||後面的部分,是因為,this返回的是undefined

但是(0, eval)('this')有點困惑

這個鏈結大致說明了差別,多方考證,總結一下

1.在ecma規範中,eval存在直接呼叫和間接呼叫兩種方式,而直接呼叫時上下文為當前執行環境,間接呼叫時上下文為全域性環境

2.直接呼叫eval時,為直接呼叫,而使用表示式計算得到的eval是間接呼叫

這樣就很明了了,eval('this')和(0,eval)('this')的區別是,乙個是在當前執行環境下,乙個是在全域性執行環境下,後面的呼叫方式才可百分百確定指向的是全域性宿主物件

Bind 與 Eval 的用法與區別

eval和bind的區別 簡單來說 繫結表示式 eval 欄位名 bind 欄位名 1 eval 單向繫結 資料是唯讀的 bind 雙向繫結 資料可以更改,並返回伺服器端,伺服器可以處理更改後的資料,如存入資料庫.2.當對次表示式操作時候,必須用eval 如 eval 欄位名 tostring tr...

python函式eval的使用與利弊

eval 函式實現將字串轉換為等價的可執行命令,執行乙個字串表示式,並返回表示式的值。eval expression globals locals expression 表示式 globals 變數作用域,全域性命名空間 locals 變數作用域,區域性命名空間 eval 3 4 實現計算3 4運算...

shell中變數的變數與eval命令

shell 中經常會用到變數的巢狀的情況。比如,單個或多個變數的值作為變數名,再對該變數名取 獲取其內部的變數的情況,這種指令碼寫起來很難搞,還好有eval 命令方便我們處理這種情況。便於理解,先來乙個示例 bin bash a my b site my site my site www.361wa...