JS作用域面試題總結

2022-03-04 23:26:45 字數 1731 閱讀 3704

1.js作用域(全域性變數,區域性變數)內部可以訪問外部,但外部的不能訪問內部的

var a=10

;function aaa();

aaa();

//a 為外部變數即全域性變數,所以可以直接訪問到 結果為10

function aaa();

aaa();

alert(a);

//a 為函式aaa()內部變數量即區域性變數,所以無法訪問到

var a=10

; function aaa();

function bbb()

bbb();

//結果為10,因為aaa()函式不能訪問到bbb()裡面的區域性變數,所以訪問到的是a=10,這個全域性變數。

2.不用var 定義變數時,會預設為是全域性變數(不規範,不推薦)

function aaa()

aaa();

alert(a);

//結果為10;

//等價於:

vara;

function aaa();

aaa();

alert(a);

//給未宣告的變數賦值,此變數就會變成全域性變數;var a=b=10; 可以解析成 b=10;var a=b; 也就是b為全域性變數,a為區域性變數,所以外部訪問a訪問不到,訪問b結果為10;

所以為了避免出現這種隱患,我們在定義變數的時候把所有要定義的變數都加上var;

function aaa()

aaa();

alert(a);//結果為,無法訪問到

alert(b);//結果為10;

3.變數的查詢是就近原則去尋找,定義的var變數;第二點,變數的宣告被提前到作用域頂部,賦值保留在原地,如下dome;

function aaa()

aaa(); //結果為:undefined

/**************/

var a=10;

function aaa()

aaa(); //結果為:undefined

可以解析為是:

var a=10;

function aaa()

aaa();

4.當引數跟區域性變數重名的時候,優先順序是等同的
var a=10

; function aaa(a)

aaa(a); //結果為:10

5.變數修改的時候另乙個變數會跟著變化,但是當變數重新被定義時,則另乙個不變化
var a=[1,2,3

];var b=a;

b.push(4);

alert(a);//結果為[1,2,3,4] 當b改變的時候a也發生了改變

當b重新被賦值的時候 a不會改變.

示例:

var a=[1,2,3];

var b=a;

b=[1,2,3,4]

alert(a)//結果為[1,2,3]

作用域面試題

1.var a 1 function a console.log a 解析 function a var a a 1 console.log a 2.var b 1 function fn b console.log fn 列印函式 fn b 3.var b 1 function fn b cons...

js面試題總結

1 預編譯 script varx 1 y z 0 function add n y add x 2 function add n z add x 問執行完畢後 x,y,z 的值分別是多少?x 1 y undefined z undefined 函式表示式沒有return 所以為undefined ...

js 面試題總結

1.typeof返回資料型別有哪些 number,string,boolean,object,undefined,function 2.強制型別轉換有哪些?隱式型別轉換有哪些?轉換為string tostring 轉換為number number parseint parsefloat 轉換為boo...