記一道有十分有意思的JS面試題

2021-09-16 12:26:14 字數 1436 閱讀 7274

下面**中a在什麼情況下會列印1?:

var a = ?

if (a == 1 && a == 2 && a == 3)

這題目猛一看,怎麼可能?但事實上答案其實很簡單,如下:

var  a = 

}if (a == 1 && a == 2 && a == 3)

看不明白?到現在是否有種懷疑自己學過的js是假的感覺?來看下解題思路:

1、物件在與字串拼接或比較時,首先會通過valueof()方法來呼叫其原始值。原始值即其本身的值。

var a ={};

console.log(a.valueof());// {}

console.log(a === a.valueof());// true

console.log(typeof a.valueof());// object

2、如果值為物件,則會呼叫tostring()方法。若物件本身沒有該方法,會返回"[object objectname]",其中 objectname 是物件型別的名稱。
var a = {};

console.log(a.tostring());// [object object]

console.log(a.tostring() + 1);// [object object]1

console.log(a + 1 === a.tostring() + 1);// true

3、該物件obj下如果有tostring()方法,會呼叫該方法。
var a = 

};console.log(a.tostring());// 1

console.log(a.tostring() + 1);// 2

console.log(a + 1 === a.tostring() + 1);// true

4、通過以上三點推斷出:物件每進行一次比較或拼接都會執行tostring方法。
var num =1;

var a =

};console.log(a+"");// 2

console.log(a+"");// 3

console.log(a + 1);// 5

console.log(a == 5);// true

5、現在再來看下答案是不是很簡單了?
var  a = 

一道有意思的JS面試題

var name the window var object console.log object.getnamefunc 這道題答案就是 the window 我也毫不猶豫的掉進坑裡面了 苦悶啊 其實這種情況有些人會經常遇到就是會用 var this this 我相信這行 你一定寫過 先說一下函式...

轉一道有意思的面試題

我的老同學開創了乙個軟體公司,富的流油。今天他到這個城市來後馬上打 給我 還好吧?我到這裡的大學招畢業生,要呆上五天,咱哥們趁這個機會好好聚一聚,我做東。既然他要做東,我理所當然順水推舟。來到他下榻的賓館,看見乙個大學生模樣的人站在他面前接受面試。我的老同學說 我這裡有個魔方,你能不能把它弄成六面六...

一道有意思的面試題的解答

題目 有一副牌,52張,先要求隨機的進行分配。分析 一52張的副牌,可以分析出實體bean為card 紙牌 還有乙個管理紙牌的類cardmanager。程式如下 card類 cardmanager類 mainclass類 其中的乙個輸出的結果為 程式之中所要注意的問題 personmap.get i...