new Function和eval區別
eval和new Function都可以動態解析和執行字串。但是它們對解析內容的執行環境判定不同。
eval中的程式碼執行時的作用域為當前作用域。它可以訪問到函式中的區域性變數。
new Function中的程式碼執行時的作用域為全域性作用域,不論它的在哪個地方呼叫的。所以它訪問的是全域性變數a。它根本無法訪問b函式內的區域性變數。
下面這個例子可以說明了:
var a = 'global scope' function b(){ var a = 'local scope' eval('console.log(a)') //local scope ;(new Function('','console.log(a)'))() //global scope } b();
轉自:https://www.cnblogs.com/zhangfengyang/p/5526024.html
相關推薦
new Function和eval區別
eval和new Function都可以動態解析和執行字串。但是它們對解析內容的執行環境判定不同。 eval中的程式碼執行時的作用域為當前作用域。它可以訪問到函式中的區域性變數。 new Function中的程式碼執行時的作用域為全域性作用域,不論它的在哪個地方呼叫的。所以它訪問的是全域性變數a。它根本無
Object.create()和new object()和{}的區別
define pset operator 不能 div 有效 兩個 property table Object.create()介紹Object.create(null) 創建的對象是一個空對象,在該對象上沒有繼承 Object.prototype 原型鏈上的屬性或者方法,
javascript中的Function和eval
eval(String):可以計算字串內容 example: <script type="text/javascript"> eval("x=10;y=20;document.write(x*y)"); document.write(
eval和new Function的區別
light console ole 運行環境 相同 fun glob rip UNC eval和new Function都可以動態解析和執行字符串。但是它們對解析內容的運行環境判定不同。 var a = ‘global scope‘ function b()
JSON.parse()和eval()的區別
如果 字符串 擔心 並且 spa 區別 color 操作 插入 JSON.parse()之可以解析json格式的數據,並且會對要解析的字符串進行格式檢查,如果格式不正確則不進行解析,而eval()則可以解析任何字符串,eval是不安全的。 比如下面的字符串: var
PHP中new static() 和 new self() 的區別
pub 堆內存 func sel urn ret 通過 ati php self 指的是self所在的類 new static 實例化的是當前使用的類,有點像$this ,從堆內存中提取出來。 還是通過實例說明一下: class A { public static f
PHP new self()和new static()的區別
phpnew static()是php5.3以後引入新的特性,延遲靜態綁定.訪問的是當前實例化的那個類,那麽 static 代表的就是那個類。new self() 是指的不是調用上下文,它指的是解析上下文.class Test { public static funtion getSelf(){
2017年9月16日 new Class()和getInstance()的區別
iat -1 turn string ont 報錯 靜態 end 單例 new class new關鍵字實際上是在heap(堆中)開辟了一塊內存,而等號右邊的這個對象實際上就是一個內存地址 getInstance() getInstance()主要是調用類中的stati
[C++] Object i = Object(0)和Object* i = new Object(0)的區別
pil nod 正常 -cp his tor ddr pretty 例子 C/C++裏指針通常是指向一個對象的,所以不能指向某一變量(Object i,i為某個變量),不過在Java中所有變量都是對象 舉個例子: int a=1; int *p=a; 報錯:inv
LightOJ 1098 - A New Function (前n項的因子和 不包括本身和1)
blank func lld class space algorithm php 求和 scan 題意:http://www.lightoj.com/volume_showproblem.php?problem=1098 通過一個因子,求出與此因子相對應的其他因子,求和;
$(document).ready(function(){}), $().ready(function(){})和$(function(){})三者區別
之間 jquer bsp fun 頁面加載 選擇 pan 無需 操作 當 DOM(文檔對象模型) 已經加載,並且頁面(包括圖像)已經完全呈現時,會發生 ready 事件。ready() 函數僅能用於當前文檔,因此無需選擇器。所以document選擇器可以不要,那麽就可以寫成
Java中使用new Date()和System.currentTimeMillis()獲取當前時間戳的區別(轉)(Java進階-性能提升)
使用 get csdn 比較 his new mem ava 輸出 在開發過程中,通常很多人都習慣使用new Date()來獲取當前時間,使用起來也比較方便,同時還可以獲取與當前時間有關的各方面信息,例如獲取小時,分鐘等等,而且還可以格式化輸出,包含的信息是比較豐富的。但是
js中var a=new Object()和var a={}有什麽區別嗎?
ext 語言 details () targe new 簡易 end 屬性 應該是沒有區別的,兩者都是生成一個默認的Object對象。js和其它語言一樣,一切對象的基類都是Object,所以,new Object()和簡易的{}是同樣的空對象,就是默認的對象。本來我以為{}
C++ new 和malloc 區別
clas 區別 let void 操作符 類型 new 需要 調用 1.分配地方不同,malloc是堆上面,new是自由存儲區域 2.malloc/delete是函數,new/delete是操作符,可以重載 3.malloc 要指定大小,返回的是void*指針,開辟的是空空
$(document).ready(function(){...})和$(document).load(function(){...})的區別
1. 概述 大家在敲jQuery程式碼的時候經常會用到$(document).ready(function(){...})和$(document).load(function(){...}),它們到底有什麼區別呢? 2.DOM文件載入的步驟: (1) 解析HTML結構。 (2)
JAVA之String直接賦值和使用new賦值的區別
String str1 = "ABC"; String str2 = new String("ABC"); String str1 = “ABC”;可能建立一個或者不建立物件。如果”ABC”這個字串在java String池裡不存在,會在java String池裡建立一個建立一個String物件
淺談new/delete和malloc/free的用法與區別
淺談new/delete和malloc/free的用法與區別 目錄 一.new和delete用法 二.malloc和free的用法 三.new和malloc的區別 正文 每個程式在執行時都會佔用一塊可用的記憶體空間,
Bind和Eval的區別
<asp:TemplateField HeaderText="年齡">
List list = new ArrayList();和ArrayList list=new ArrayList();用法及區別(轉載)
List是一個介面,而ArrayList 是一個類。 ArrayList 繼承並實現了List。 List list = new ArrayList();這句建立了一個ArrayList的物件後把上溯到了List
function(){}、var fun=function(){}和function fun(){}的區別
定義 () 屬於 方法體 獨立 又能 找到 nbsp 保留 一、基本定義 1.函數聲明:使用function聲明函數,並指定函數名。 function fun() { // ...... } 2.函數表達式:使用function聲明函數,但未指定函數名,將