一道面試題

2021-08-28 16:17:00 字數 1012 閱讀 1015

var a =

;var b = a;

a.x =a =

; console.

log(a.x)

;// undefined

console.

log(b.x)

;//

##解析

###js引用型別指標的工作方式

首先是a指向了乙個物件{n:1},b指向了a所指向的物件

然後a.x = a =

js賦值運算順序為從右往左,不過由於"."運算子優先順序最高,所以先計算a.x。此時a指向的物件{n:1 }新增了新的屬性x,這個x的值為undefined。

接著執行賦值預算a=,這個時候a指向的物件就發生了變化,指向了新的物件 {n:2}。

繼續執行a.x = a。此時啊a.x已經指向了物件{n:1,x=undefined}中的x,等待被賦值,那麼這個物件就變成了{n:1,x:},也就是b所指向的物件。

###本質在於 .運算優先於=賦值運算

###如果還是理解不了,可以看圖

###其實這種題也只能拿來做考題,正常也不會有人這麼寫**,寫出來怕自己也理解不了。更多的寫法是分開寫會好一些。

譬如:

var a=

;var b=

;var c=a;

var d;

b.x=d=a.x=a=

//等價於

a.x=

;b.x=;a=

;d=//結果是

a :b :

}c :

}d :

一道面試題

一道面試題 射擊運動員10發打中90環有多少種可能,請編寫程式計算出來,並列印出結果,0環和10環均有效。打中90環就是沒打中10環,所以打中90環跟打中10環的可能性是一樣的。然後開始遞迴狂打槍,一到10就記錄 if params i 10 在迴圈的控制中已經排除了大於10的可能性 i 10 pa...

一道面試題

前些時候在找工作,就在準備結束此次找工作歷程的時候,去了一家公司面試,去了之後技術經理直接帶到一台電腦旁,給了一張紙條,上面是這樣的題目 用c或c 來實現 1 建立一棵樹,該樹的深度是隨機的,每個節點的位元組點數是隨機的。2 給每個節點分配一段隨機大小的記憶體空間,給每個節點賦乙個隨機數。3 遍歷這...

一道面試題

如果n為偶數,則將它除以2,如果n為奇數,則將它加1或者減1。問對於乙個給定的n,怎樣才能用最少的步驟將它變到1。例如 n 61 n 60 n 2 30 n 2 15 n 16 n 2 8 n 2 4 n 2 2 n 2 1 public class myclass public static vo...