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重新賦值了,所以會報錯.
函式定義表示式
var
fns =
function
();
// 函式宣告語句
function
fns()
函式宣告語句「被提前」到外部指令碼或外部函式作用域的頂部,所以以這種方式宣告的函式,可以被再它定義之前出現的**所呼叫。而函式定義表示式中,變數的宣告被提前了,但是給變數的賦值是不會提前的,所以,以表示式方式定義的函式在函式定義之前無法呼叫。
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重新賦值了,所以會報錯.
函式定義表示式
var
fns =
function
();
// 函式宣告語句
function
fns()
函式宣告語句「被提前」到外部指令碼或外部函式作用域的頂部,所以以這種方式宣告的函式,可以被再它定義之前出現的**所呼叫。而函式定義表示式中,變數的宣告被提前了,但是給變數的賦值是不會提前的,所以,以表示式方式定義的函式在函式定義之前無法呼叫。
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...