国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

一道前端面試題引發(fā)的思考

gaomysion / 1828人閱讀

摘要:直接開始題目是厲害了說句實話開發(fā)中誰寫成這樣保證會被打死。不過面試就是面試,有面試官的考量點。官方是這么說的。結(jié)果完美,不過小姐姐的意思是數(shù)組的方法會自動觸發(fā)數(shù)組的。

直接開始題目是
if(a==1 && a==2 && a==3){
    alert("厲害了")
}

說句實話開發(fā)中誰寫成這樣保證會被打死。

不過面試就是面試,有面試官的考量點。

我理解的點有兩個

1、隱式類型轉(zhuǎn)換

先說說隱式類型轉(zhuǎn)換有幾種情況

先說條件判斷 ==

String和Number比較:"1" == 1,字符串會調(diào)用Number()方法轉(zhuǎn)為數(shù)字后再比較。

Boolean和Number比較:true == 1, Boolean調(diào)用Number()方法轉(zhuǎn)為數(shù)字后再比較。

布爾值和字符串比較:true == "1",會將雙方調(diào)用Number()轉(zhuǎn)換為Number,然后再進行比較。

總結(jié)一句話,==兩側(cè)非Number都會調(diào)用Number()轉(zhuǎn)化后再調(diào)用。

再說說 + - * /運算符

它們四個可以分兩類,+和其它,我們都知道+既可以做運算符也可以做字符串鏈接。

1+1 = 2
1+"1" = "11"
2-"1" = 1
2*"1" = 2
2-/"1" = 2

除了+號運算符,其它運算符兩側(cè)如果有字符串數(shù)字的話也是會調(diào)用Number轉(zhuǎn)換再運算。

聊到這里你發(fā)現(xiàn)這和題目沒毛關(guān)系啊!過來人告訴你 冷靜!往下看

2、valueOf / toString等原生api的掌握程度

針對對象的valueOf / toString等原生api,我們看數(shù)字和對象的比較/數(shù)字和對象的運算

以上我們總結(jié)單純的隱式類型轉(zhuǎn)換沒辦法解決問題

js里除了空字符串、數(shù)字0、null、undefined、false、NaN為假 其它均為真。

JavaScript調(diào)用valueOf方法將對象轉(zhuǎn)換為原始值。你很少需要自己調(diào)用valueOf方法;當遇到要預(yù)期的原始值的對象時,JavaScript會自動調(diào)用它。官方是這么說的。

1 == {
    valueOf:()=>{
        return 1
    }
}

//true

從結(jié)果看 對象會自動調(diào)用valueOf方法

這樣我們就可以改成:

a = {
      value :0,
      valueOf :function(){
            this.value++
            return this.value
      }
}

1==a //true
2==a //true
3==a //true
//結(jié)果為true,每次隱式類型轉(zhuǎn)換的過程都會自動調(diào)用valueOf。

//接下來說toString

//都有valueOf了 還說toString干嘛,的確默認都會調(diào)用,只不過有優(yōu)先級。
//我只能說js作者很牛逼。

//如果同時有包含它們兩個(valueOf和toString會怎么樣

a = {
      value :0,
      valueOf :function(){
            this.value++
            return this.value+"aa"
      },
      toString:function(){
           this.value+=2
           return this.value
      }
}

規(guī)則就是這樣,當valueOf返回不為基本類型的時候,回去調(diào)用toString方法。

調(diào)用了三次結(jié)果變?yōu)?

還有一個很騷的方法,是從一個小姐姐博客看到的,https://juejin.im/post/5d124a12f265da1b9163a28d
文章第六題:我聊的這個就是這個題,不過感覺小姐姐聊得更專業(yè)點。

let arr=[1,2,3]
arr.join = arr.shift
arr ==1
arr ==2
arr ==3

結(jié)果完美,不過小姐姐的意思是數(shù)組的toString方法會自動觸發(fā)數(shù)組的jion。
這個真是厲害了!

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/105311.html

相關(guān)文章

  • 一道簡單面試引發(fā)思考

    摘要:另一個問題,就是我下面要提及的作用域問題,我當時思考的時間太久了這是回憶中的面試題實際略有差異,不糾結(jié)了說一下腳本的運行結(jié)果引用錯誤中給出的錯誤提示。 版權(quán)聲明:此文首發(fā)于我的簡書賬號人生還有多少個二十年,轉(zhuǎn)載請注明出處。 此處有幾百字嘮叨:   當天,我早早起床,跨越上百公里,高德導(dǎo)航,路人指點,跌跌撞撞到達招聘會現(xiàn)場,當時已是中午十二點半,吃了午餐(半瓶白開水),開始準備投遞...

    wpw 評論0 收藏0
  • 一道面試引發(fā)思考 --- Event Loop

    摘要:想必面試題刷的多的同學(xué)對下面這道題目不陌生,能夠立即回答出輸出個,可是你真的懂為什么嗎為什么是輸出為什么是輸出個這兩個問題在我腦邊縈繞。同步任務(wù)都好理解,一個執(zhí)行完執(zhí)行下一個。本文只是我對這道面試題的一點思考,有誤的地方望批評指正。 想必面試題刷的多的同學(xué)對下面這道題目不陌生,能夠立即回答出輸出10個10,可是你真的懂為什么嗎?為什么是輸出10?為什么是輸出10個10?這兩個問題在我腦...

    betacat 評論0 收藏0
  • 一道面試引發(fā)思考 --- 理解 new 運算符

    摘要:首先,我先去上搜索了的定義運算符創(chuàng)建一個用戶定義的對象類型的實例或具有構(gòu)造函數(shù)的內(nèi)置對象的實例。 今天看到一道面試題,如下,問: 實例化 Person 過程中,Person返回什么(或者 p 等于什么)? function Person(name) { this.name = name return name; } let p = new Person(Tom); 說實...

    shengguo 評論0 收藏0
  • 一道面試引發(fā)思考:(2)

    摘要:由虛擬機生成并拋出,,屬于系統(tǒng)內(nèi)部錯誤或者資源耗盡等嚴重情況,屬于需要擔負的責任,這一類異常事件是無法恢復(fù)或者不可能捕獲的,將導(dǎo)致應(yīng)用程序中斷,但是自定義是可以捕獲的。 題目 showImg(http://img-storage.qiniudn.com/15-9-22/50608386.jpg); 答案:D 分析 Java 異常的結(jié)構(gòu)體系 showImg(http://img-stor...

    stefan 評論0 收藏0
  • 一道面試引發(fā)思考

    摘要:下面我們來使用面向?qū)ο箢悎D這里就不再畫了首先面試題中所提到的我們都可以看成類,比如停車場是一個類吧,它里面的車位是一個類吧,攝像頭,屏幕。。。 以下是某場的一道面試題(大概): 1、一個停車場,車輛入場時,攝像頭記錄下車輛信息2、屏幕上顯示所接收的車輛的信息情況(車牌號)以及各層車位的車位余量3、停車場一共四層車位,其中的三層都為普通車位,還有一層為特殊車位(體現(xiàn)在停車計費價格上面的不...

    Apollo 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<