色婷婷狠狠18禁久久YY,CHINESE性内射高清国产,国产女人18毛片水真多1,国产AV在线观看

javascript作用域面試題

傅智翔1年前6瀏覽0評論

作為前端工程師,javascript作為一門必備技能之一,因此掌握javascript作用域的概念和實現(xiàn)是非常重要的。

作用域是指在程序中定義變量的區(qū)域,它決定了變量的可見范圍和生命周期。

javascript的作用域主要分為全局作用域和函數(shù)作用域,其中全局作用域是指定義在全局范圍內(nèi)的變量,而函數(shù)作用域則是指定義在函數(shù)內(nèi)部的變量。

// 全局作用域
var num = 10;
function test(){
// 函數(shù)作用域
var num1 = 20;
}

在javascript中,變量的查找一般從內(nèi)部作用域開始往外查找,即如果當(dāng)前作用域沒有定義該變量,則會去外部作用域查找,直到找到全局作用域。

// 查找變量num的值,先在函數(shù)內(nèi)部查找,找不到再去全局查找
var num = 10;
function test(){
var num = 20;
console.log(num); // 20
}
test();   
console.log(num); // 10

在javascript中還存在著詞法作用域和動態(tài)作用域的概念,其中詞法作用域是在代碼編寫期間就確定了變量查找的作用域范圍,而動態(tài)作用域則是在代碼運行期間才確定變量的作用域。

// 詞法作用域
var a = 10;
function test(){
console.log(a);
}
test();   // 10
// 動態(tài)作用域
function foo(){
console.log(b);
}
function bar(){
var b = 20;
foo();
}
var b = 30;
bar();  // 30

最后,javascript作用域的面試題也非常常見,例如下面的代碼:

// 面試題一:
var name = "Tom";
function showName(){
console.log(name);
var name = "Jerry";
console.log(name);
}
showName(); // undefined Jerry
// 面試題二:
function showNum(){
for(var i=0;i<5;i++){
setTimeout(function(){
console.log(i);
},i*1000);
}
}
showNum(); // 5 5 5 5 5

這些面試題實際上都是考察對javascript作用域的理解和掌握程度,因此我們需要認(rèn)真掌握javascript作用域的各種概念和特性,才能在面試中做到游刃有余。