js中的作用域和執行上下文的區別
光是從字面上的概念上來理解的話有點繞,其實很好區分。
var a=1; //全域性作用域
function fn1(){
var a=2; //fn1作用域
}
如上程式碼,作用域代表著已宣告變數或者函式的訪問範圍,在fn1作用域內使用變數a會先從當前作用域尋找,如果沒有會往作用域上端尋找。
this.a=1; //全域性執行上下文
function fn1(){
this.a=2; //fn1執行上下文
}
var obj=new fn1();
如上程式碼,new fn1()時的執行上下文就是fn1,fn1就是obj的原型。
可以看出,作用域和執行上下文並不是一個概念,它們的區別就像是你訪問a和this.a時的區別。
作用域和執行上下文之間最大的區別是:
執行上下文在執行時確定,隨時可能改變;作用域在定義時確定,永遠不會改變。
但有一種情況下var a和this.a是相同的,如下程式碼:
var a=1;
console.log(this.a); //1
全域性變數和全域性函式附屬於全域性物件,因此使用var 和this.定義變數是等效的。
相關推薦
js中的作用域和執行上下文的區別
光是從字面上的概念上來理解的話有點繞,其實很好區分。 var a=1; //全域性作用域 function fn1(){ var a=2; //fn1作用域 } 如上程式碼,作用域代表著已宣告變數或者函式的訪問範圍,在fn1作用域內使用變數a會先從當前作用域
JS中作用域和變量提升(hoisting)的深入理解
text his 分享 裏的 can ava defined 部分 pub 作用域(Scoping) 對於Javascript初學者來說,一個最迷惑的地方就是作用域;事實上,不光是初學者。我就見過一些有經驗的javascript程序員,但他們對scope理解不
javascript作用域、執行上下文、原型和原型鏈
img eva reference https 結果 lse prot console 結束 一、作用域js中作用域是指可訪問變量,對象,函數的集合,也就是調用它們能生效的代碼區塊。在js中沒有塊級作用域,只有全局作用域和函數作用域 1、全局,函數作用域 var a = 1
js中style,currentStyle和getComputedStyle的區別
偽類 pro null prop obj 解決 strong 語法 nts js中style,currentStyle和getComputedStyle的區別 MarysMa 在js中用xx.style.marginTop是無法獲取寫在css或<sytle>標簽
JS中的call()和apply()方法區別
prototype 理解 ace attach bdb .html closed mil solid 如 果沒接觸過動態語言,以編譯型語言的思維方式去理解javaScript將會有種神奇而怪異的感覺,因為意識上往往不可能的事偏偏就發生了,甚至覺得不可 理喻.如果在學Java
JS中的Undefined和Null的區別
如果 這樣的 使用 聲明 錯誤 div type 類型 只有一個 Undefined ①在聲明變量時,如果沒有給變量賦值,則這個變量就是undefined類型; ②訪問未聲明的變量會報錯誤消息,但這樣的變量使用 typeof 測試,返回的值為Undefined。 即未聲明變
前端面試題:JS中的let和var的區別
blog ocs undefine define 規範 target {} 擁有 comment 最近很多前端的朋友去面試被問到let和var的區別,其實阮一峰老師的ES6中已經很詳細介紹了let的用法和var的區別。我簡單總結一下,以便各位以後面試中使用。 ES6 新增
js中的forEach和map的區別
函數 gpo color 程序 foreach for 返回值 事情 表示 我們先來看兩者之間的相同之處 var arr = [‘a‘,‘b‘,‘c‘,‘d‘]; arr.forEach(function(item,index,arr){ //item表示數組中的
JMeter學習(三) 元件的作用域和執行順序
關於 sse blank 原則 問題 element spa pan ons 轉載自 ==== jmeter學習(三)元件的作用域與執行順序 1.元件的作用域 JMeter中共有8類可被執行的元件(測試計劃與線程組不屬於元件),這些元件中,取樣器是典型的不與其它元件發生
JS(作用域和閉包)
win argument cal bsp log AR 點擊 表達式 一個 1.對變量提升的理解 2.說明 this 幾種不同的使用場景 3.創建10個 <a>標簽,點擊的時候彈出來對應的序號 4.如何理解作用域 5.實際開發中閉包的應用 一、執
Js 中的i++ 和 ++i 的區別
... ons 不同 減法 是不是 pre 簡單 前置 進行 首先碰見 i++ 和 ++i 會一臉蒙蔽 感覺沒什麽區別,都是相加 , 但是 輸出的值是不同!!! 來奉上代碼來進行比較 var i = 1; var a = i++; //a = 1; 此時i為2,但賦
JS中的array和Object的區別
區別: 陣列表示有序資料的集合,物件表示無需資料的集合。如果資料順序很重要的話,就用陣列,否則就用物件的好。 陣列的資料沒有名稱'name' 物件的資料有名稱 'name' 但是在很多程式語言中有個叫關聯陣列的,這種陣列中的資料是有名稱的。 如何區分array和
Vue.js中計算屬性和方法的區別
在vue.js中,計算屬性和方法達到的效果是一樣的,但是計算屬性是基於依賴進行快取的,只有message發生改變才會導致reverseMessage發生改變,只要 message 還沒有發生改變,多次訪問 reversedMessage 計算屬性會立即返回之前的計算結果,而不
【讀書筆記】你唔知JS 函式作用域和塊作用域
函式中的作用域 1.無論識別符號宣告出現在作用域中的何處, 這個識別符號所代表的變數或函式都將附屬於所處作用域的氣泡。 2.這些識別符號全都無法從全域性作用域中進行訪問, 因此會導致ReferenceError 錯誤。 隱藏
【JMeter】各元件的作用域和執行順序
剛使用 jmeter 時,可能對其中各元件的作用域和執行順序會很迷惑,需要多嘗試多思考。 一、JMeter 中各元件的作用域 元件的作用域是靠測試計劃的的樹型結構中元件的父子關係來確定的 其中取樣器不和其它元件相互作用,因此沒有作用域的概念
js中的null和undefined的區別
值undefined實際是是從值null派生的, 因此alert(null==undefined);//output “true” 儘管這兩個值相等,但他們的含義不同。undefined是聲明瞭變數但未對其初始化時賦予該變數的值,null則用於表示尚未存在的物件。
作用域和閉包——執行上下文
變量 span log -c 變量定義 rip var 作用域 div console.log(‘clm‘); //undefined var a = 10; fn(‘clm‘); // ‘clm‘ , 20 function fn(name){ age = 2
理解javaScript中的作用域和上下文Understanding Scope and Context in JavaScript
譯者注:一直對於作用域和上下文感到很混亂,無意中看到這篇文章,覺得講得很好,故翻譯來與大家分享。翻譯不好之處,請大家多多指教。 原文連結:http://ryanmorr.com/understanding-scope-and-context-in-javascript/ 前言部分,不做翻譯
js學習筆記-第二章變數、作用域和記憶體問題-執行環境和作用域
//執行環境:執行環境(execution context,為簡單起見,有時也稱為“環境”)是 JavaScript 中最為重要的一個概念。執行環境定義了變數或函式有權訪問的其他資料,決定了它們各自的行為 //變數物件:。每個執行環境都有一個與之關聯的變數物件(variable object