var num1 = 55如題,問輸出的結果?var num2 = 66
function
f1(num, num1)
f1(num1, num2)
console.log(num1)
console.log(num2)
console.log(num)
首先講一下執行順序:
js**執行分為兩個部分:
1.**的檢查裝載階段(預編譯階段),此階段進行變數和函式的宣告,但是不對變數進行賦值,變數的預設值為undefined。
2.當前作用域中不存在要訪問的變數時,則會到上一層的作用域中尋找,直到全域性作用域。
宣告完變數和函式之後,就執行f1(num1,num2)
函式的引數相當於函式內部隱式宣告變數:
function引數傳入之後就是將變數賦值:f1(num, num1)
functionf1(num, num1)
var num1 = 55然後看下面的輸出:var num2 = 66
function
f1(num, num1)
console.log(num1)num1在全域性作用域中未被修改且賦值是55,num2被修改為100,num查詢作用域,未找到輸出則為報錯未定義:console.log(num2)
console.log(num)
console.log(num1) //開啟我們最愛的谷歌,結果顯而易見了:55 console.log(num2) //
100
console.log(num) //
undefiend
js作用域相關的一道題
今天有個夥伴問了我乙個題目,題目如下 var x 10 function fn function show f show fn 略作沉思,我的回答是20,小夥伴說是10 我昂,按照我的尿性我腦袋想的是四捨五入這段等於 var x 10 function show f show fn 但是其實不是這樣...
一道關於JS作用域的面試題
1 var x 1 2var obj 11 說出下面的輸出結果 obj.dbl 解析 this.x指向當前物件,所以this.x 2等同於obj.x 2 而x 2,在當前作用域中沒有找到宣告,則在全域性作用域下查詢是否有x,x 2等同於window.x 2 日誌列印輸出2 4,此時window.x為...
一道關於訊號的題
用fork建立兩個子程序,呼叫signal 讓父程序接收鍵盤上的中斷訊號 control c 捕捉到訊號後父程序用kill 向子程序傳送自定義訊號,子程序捕捉到訊號後分別輸出如下資訊後終止 child process 1 is killed by parent child process 2 is ...