js變數問題

2022-04-30 20:12:12 字數 2135 閱讀 8155

this指向問題,誰呼叫它,它就指誰!!!

關於問題1:難道一執行函式,裡面的申明會再次置頂。

var a=100;

function a()

a();

這個串**執行完會報錯 : a is not a function

問題來了,為什麼會報這個錯誤呢?  這裡涉及到函式和變數的預解析:

1)函式宣告會置頂

2)變數宣告也會置頂

3)函式宣告比變數宣告更置頂:(函式在變數上面)

4)變數和賦值語句一起書寫,在js引擎解析時,會將其拆成宣告和賦值2部分,宣告置頂,賦值保留在原來位置

5)宣告過的變數不會重複宣告

知道以上的規則,上面的**等同於 :  

var a=function ()

var a=100;

a();

相當於給a重新賦值了,所以會報錯.

函式定義表示式

varfns =function();

// 函式宣告語句

functionfns()

函式宣告語句「被提前」到外部指令碼或外部函式作用域的頂部,所以以這種方式宣告的函式,可以被再它定義之前出現的**所呼叫。而函式定義表示式中,變數的宣告被提前了,但是給變數的賦值是不會提前的,所以,以表示式方式定義的函式在函式定義之前無法呼叫。

var a=100;

function a()

a();

這個串**執行完會報錯 : a is not a function

問題來了,為什麼會報這個錯誤呢?  這裡涉及到函式和變數的預解析:

1)函式宣告會置頂

2)變數宣告也會置頂

3)函式宣告比變數宣告更置頂:(函式在變數上面)

4)變數和賦值語句一起書寫,在js引擎解析時,會將其拆成宣告和賦值2部分,宣告置頂,賦值保留在原來位置

5)宣告過的變數不會重複宣告

知道以上的規則,上面的**等同於 :  

var a=function ()

var a=100;

a();

相當於給a重新賦值了,所以會報錯.

函式定義表示式

varfns =function();

// 函式宣告語句

functionfns()

函式宣告語句「被提前」到外部指令碼或外部函式作用域的頂部,所以以這種方式宣告的函式,可以被再它定義之前出現的**所呼叫。而函式定義表示式中,變數的宣告被提前了,但是給變數的賦值是不會提前的,所以,以表示式方式定義的函式在函式定義之前無法呼叫。

JS變數的相關問題

儲存在記憶體之中的,帶有名稱的,資料資訊,其中儲存的資料,在執行過程中,是可以改變的 通俗的講就是乙個容器,用來儲存資料的容器 var name 張三 name則指的是所定義的變數的名字 這裡的等號跟數學的 不一樣,在電腦程式中 是指講右邊的內容賦值更黑左邊的變數 張三 則指的是儲存在變數中的資料 ...

js中變數宣告的問題

1.var a function a alert typeof a 輸出 function 2.function a var a alert typeof a 輸出 function 3.function a var a 1 alert typeof a 輸出 number 4.var a 1 fu...

JS變數作用域的問題

document ready function function json 在有資料裝載的情況下,這個位置得到的 unitarray.length等於4 if unitarray.length 1 nextreply attr disabled true fillreply session,docu...