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

javascript作用域面試題目

林雅南1年前6瀏覽0評論
作用域是在程序執(zhí)行過程中變量生效的區(qū)域。在JavaScript中,作用域是從變量聲明位置開始,到最近的父級作用域結(jié)束。作用域能幫助我們控制變量的生命周期,確保代碼的正確性和可維護(hù)性。下面我們將介紹一些常見的JavaScript作用域面試題目。題目一代碼:
var a = 1;
function foo(){
console.log(a);
var a = 2;
}
foo();
輸出結(jié)果是什么?

答案:

undefined

解析:

在函數(shù)內(nèi)部,使用了var關(guān)鍵字聲明了一個新的變量a,因此函數(shù)內(nèi)部的a和外部的a是不同的變量。在變量提升階段,函數(shù)內(nèi)部的變量a會被聲明,但不會被賦值,因此第一次console.log打印的是undefined。題目二代碼:
var a = 1;
function foo(){
console.log(a);
a = 2;
}
foo();
輸出結(jié)果是什么?

答案:

1

解析:

在函數(shù)內(nèi)部,沒有使用var關(guān)鍵字聲明變量a,因此函數(shù)內(nèi)部的a指向了外部的a。因此在console.log打印的時候,輸出的是外部的a的值1。在函數(shù)內(nèi)部修改了變量a的值,這個修改會影響到全局的變量a的值。題目三代碼:
for (var i = 0; i < 5; i++) {
setTimeout(function() {
console.log(i);
}, 1000);
}
輸出結(jié)果是什么?

答案:

5
5
5
5
5

解析:

循環(huán)中的setTimeout異步方法會在1秒之后調(diào)用console.log方法,此時循環(huán)已經(jīng)執(zhí)行完畢,變量i的值變?yōu)榱?。因此在輸出結(jié)果中,都是輸出了變量i的最終值5。題目四代碼:
for (let i = 0; i < 5; i++) {
setTimeout(function() {
console.log(i);
}, 1000);
}
輸出結(jié)果是什么?

答案:

0
1
2
3
4

解析:

在循環(huán)中使用let關(guān)鍵字聲明變量i,它會創(chuàng)建一個塊級作用域,在每次循環(huán)時都會重新聲明一個新的變量i。因此在輸出結(jié)果中,分別輸出了變量i的值0,1,2,3和4。題目五代碼:
function outer() {
var a = 2;
function inner() {
console.log(a);
}
return inner;
}
var func = outer();
func();
輸出結(jié)果是什么?

答案:

2

解析:

函數(shù)outer返回函數(shù)inner,變量a的值為2。將返回的函數(shù)inner賦值給變量func,調(diào)用func方法時,輸出的是outer函數(shù)內(nèi)部定義的變量a的值2。因為在函數(shù)outer的內(nèi)部定義的變量a是函數(shù)inner的一個閉包。總結(jié)在JavaScript中,作用域是非常重要的概念。面試過程中經(jīng)常會問到有關(guān)作用域的問題。我們可以通過實踐題目來加深我們對于作用域的理解,提高我們的技能和應(yīng)變能力。