函式面試題

2021-10-02 19:19:03 字數 2416 閱讀 2179

var a = 1;

function b()

}b();

console.log(a);

輸出: 1

解析:輸出的a是window下的

function foo()

return bar();

function bar()

}alert(foo());

輸出: 8

解析: 涉及預編譯問題,兩個方法名同名,

後宣告的覆蓋之前的所以這裡輸出8

function parent() 

return hoisted();

}console.log(parent());

輸出: 「typeerror: hoisted is not a function」

解析:當變數名和函式名重名是,因為函式優先宣告,所以變數名覆蓋函式名,這裡hoisted = 「i』m a variable」,

alert(foo());

function foo() ;

return bar();

var bar = function() ;

}

輸出: 3

解析:預編譯中變數名宣告時賦值undefined,這裡是變數的值是函式,它不是乙個函式體,容易看錯

var myvar = 'foo';

(function() )();

輸出: 「original value was: undefined」, 「new value is: bar」

解析:第乙個輸出myvar為undefined:作用域中自身有宣告時不會向上層查詢,

本層有乙個提前宣告的myvar 賦值為undefined

console . log(to)    //undefined

var to=1;

function fn(n1,n2)

fn(10,20)

console . log(to)    //30

解析:

第乙個輸出:預編譯變數宣告提前

第二個輸出:作用域,輸出to為全域性變數的值

第三個輸出:作用域,輸出to為全域性變數的值修改n1+n2 = 30;

第四個輸出:全域性變數的值

function test(a,b)

function d()

console . log(b)    //2

}test(1)

解析:預編譯的過程

function foo() 

var obj1 = ;

var obj2 = ;

obj1.foo(); // 2

obj2.foo(); // 3

obj1.foo.call( obj2 ); // 3

obj2.foo.call( obj1 ); // 2

解析:改變this指向

var a = function( name );

var b = function();

b.prototype.getname = function();

var b=new b('sven');

console.log( b.getname() ); // 輸出: 'sven'

解析:原型鏈加改變this指向,

我們一步步看,輸出的是b.getname(),b是b new出來的 ,所以b繼承的是

b.prototype,那麼getname() 執行的函式應該就是 function();這個函式體,函式體return this.name;,那麼在原型鏈上尋找這個name,在變數a中發現這個name,我們還發現b的值函式體裡面a改變了形參,

所以輸出的應該是 『sven』

//建構函式

function foo(name,age)

foo.prototype.alertname= function()

//建立示例

var f = new foo("l");

f.lastname = function()

f.lastname(); //"l",自身屬性

f.alertname(); //"lkillua",原型屬性

以上函式中,f共有3個屬性,f自身的屬性有2個(name屬性和lastname屬性),還有乙個alertname是原型屬性

f.firstname();

//這裡f自身屬性中沒有firstname屬性,它的原型foo函式中也麼有這個屬性,所以要再往上一層foo的原型上去找這個屬性,這種有多層原型的函式就是原型鏈,直到null為止結束原型鏈

函式面試題

面試題的理解文件 第一題 var num function fun num 18 fun 理解 結果是undefined,但是num的值為18,函式裡面的num的值為20,這串 是由上到下的循序執行的,而這裡的num如果在函式裡面則會去找自己裡面的,如果有則會使用自己裡面的num,如果沒有則會去父級...

虛函式面試題

classa classb int tmain intargc,tchar argv 情況a 不是虛函式 輸出hello world,程式執行正常 情況b 有虛函式 程式直接crash 原因是 不是虛函式的情況,this指標當成第乙個引數傳入函式 一般是通過ecx暫存器 主要裡面沒有使用這個this...

js函式面試題

一var name the window var object alert object.getnamefunc 題中有兩個alert輸出,我們首先看第乙個alert,這個alert所在的函式是在最後乙個alert裡面被呼叫的,呼叫的時候,裡面的this指向的是object,所以是在object裡面...