函式引數的傳遞時發現的一些問題

2021-10-02 11:48:15 字數 484 閱讀 6205

今天同學問到的問題,

function fun(ger)

}fun()

輸出的就是5,

可以解釋,由於function宣告提公升,所以去了上面,先宣告,後賦值,所以輸出5

後面改下**,不要賦值5了,傳引數進去5

function fun(ger)

}fun(5)

最後輸出的是function

為什麼不是5呢,傳遞引數5和賦值5有什麼區別呢,

最後找答案,有乙個機制,

// 1.分析全域性變數go,生成go物件

// go=

// 2.逐行執行

// 3.分析ao,生成ao物件

// ao=

// 最後輸出:function ger()

從這裡可以看出來,引數傳遞的作用域,是有乙個go物件和ao物件的,

變數5傳遞進去,先是引數的宣告與賦值,然後是變數的宣告,最後是函式的宣告,因為同名,所以覆蓋;

getline函式的一些問題

getline 的原型是 istream getline istream is string str char delim 其中 istream is 表示乙個輸入流,譬如cin string str表示把從輸入流讀入的字串存放在這個字串中 可以自己隨便命名,str什麼的都可以 char delim...

函式過載的一些問題

面試問題 void fun int,double void fun double,int 現在呼叫fun int int 會怎麼樣?函式過載的匹配過程有三步 1 確定候選函式,兩個原則 1 函式名相同 2 在呼叫點函式可見。顯然對於該題目來說兩個函式都是候選函式。2 確定可行函式,也是有兩個原則 1...

箭頭函式的一些問題

在普通函式中,this指向根據其使用場景不同改變。而箭頭函式中的this始終指向其父級作用域 var person p 此時的this並不是指向例項物件,而是指向父級作用域,指向window,所以不能作為建構函式 如果想要實現不定引數的呼叫,就使用.剩餘引數實現 var sayhi b consol...