整合營銷服務(wù)商

          電腦端+手機(jī)端+微信端=數(shù)據(jù)同步管理

          免費(fèi)咨詢熱線:

          javaScript 數(shù)組經(jīng)典布爾類型判斷問題

          javaScript 數(shù)組經(jīng)典布爾類型判斷問題

          1、console.log([]==[]); 2、console.log(![]==[]); 3、console.log(![]==![]); 4、 console.log(![]==false); 5、console.log([]==true); 6、console.log([]=="");7、console.log(0==![]); 8、console.log(0==[]);

          1、 console.log([]==[]);

          解釋:數(shù)組也是對(duì)象,兩個(gè)數(shù)組引用地址不同,所以結(jié)果為false

          2、console.log(![]==[]);

          解釋:!運(yùn)算符優(yōu)先級(jí)比==高------->先求![] !會(huì)將后面的數(shù)組強(qiáng)轉(zhuǎn)換為布爾類型 數(shù)組為對(duì)象類型------>所以空數(shù)組轉(zhuǎn)換為布爾類型也為true------> ![]為false. 如果數(shù)組前無!,默認(rèn)轉(zhuǎn)換為"",------->后者[]為"". 題目轉(zhuǎn)換為false=="" ,結(jié)果為true

          3、console.log(![]==![]);

          解釋: !會(huì)將后面的數(shù)組強(qiáng)轉(zhuǎn)換為布爾類型------>左右皆轉(zhuǎn)換為false,false==false,結(jié)果為true.

          4、 console.log(![]==false);

          解釋: !會(huì)將后面的數(shù)組強(qiáng)轉(zhuǎn)換為布爾類型------>左邊轉(zhuǎn)換為false,false==false,結(jié)果為true.

          5、console.log([]==true);

          解釋:[]默認(rèn)轉(zhuǎn)換為"",題目轉(zhuǎn)換為""==true,結(jié)果為false。(空字符串轉(zhuǎn)換為布爾值為false)

          6、console.log([]=="");

          解釋: []默認(rèn)轉(zhuǎn)換為"",題目轉(zhuǎn)換為""=="",結(jié)果為true。

          7、console.log(0==![]);

          解釋:0轉(zhuǎn)換為布爾值為false,后者將數(shù)組強(qiáng)轉(zhuǎn)為布爾型,![]為false,題目轉(zhuǎn)換為false==false,結(jié)果為true.

          8、console.log(0==[]);

          解釋: 0轉(zhuǎn)換為布爾值為false,后者數(shù)組默認(rèn)轉(zhuǎn)換為"",空字符串轉(zhuǎn)換為布爾值為false,題目轉(zhuǎn)換為false==false,結(jié)果為true.

          注:"", 0 , false, undefined, null, NaN 轉(zhuǎn)換為布爾值都會(huì)變成false

          JavaScript中,布爾值的隱式強(qiáng)制類型轉(zhuǎn)換通常發(fā)生在以下幾種情況下:


          1. 邏輯運(yùn)算符(&&, ||, !):當(dāng)使用邏輯運(yùn)算符時(shí),JavaScript會(huì)自動(dòng)將操作數(shù)轉(zhuǎn)換為布爾值。例如,當(dāng)你使用&&運(yùn)算符時(shí),如果第一個(gè)操作數(shù)是真值,那么整個(gè)表達(dá)式的結(jié)果就是第二個(gè)操作數(shù)的值;如果第一個(gè)操作數(shù)是假值,那么結(jié)果就是第一個(gè)操作數(shù)的值。同樣地,對(duì)于||運(yùn)算符,如果第一個(gè)操作數(shù)是真值,那么整個(gè)表達(dá)式的結(jié)果就是第一個(gè)操作數(shù)的值;如果第一個(gè)操作數(shù)是假值,那么結(jié)果就是第二個(gè)操作數(shù)的值。
          2. 條件語句(如if、while等):在條件語句中,JavaScript會(huì)將條件表達(dá)式的結(jié)果自動(dòng)轉(zhuǎn)換為布爾值。例如,在if語句中,如果條件表達(dá)式的結(jié)果為真值,則執(zhí)行相應(yīng)的代碼塊;如果結(jié)果為假值,則跳過該代碼塊。
          3. 三元運(yùn)算符(?:):三元運(yùn)算符用于根據(jù)一個(gè)條件來選擇兩個(gè)不同的值。它的語法是condition ? valueIfTrue : valueIfFalse。在這種情況下,JavaScript會(huì)將條件部分的結(jié)果轉(zhuǎn)換為布爾值,然后根據(jù)其真假來決定返回哪個(gè)值。
          4. Boolean()函數(shù):可以使用Boolean()函數(shù)顯式地將一個(gè)值轉(zhuǎn)換為布爾值。這個(gè)函數(shù)接受一個(gè)參數(shù),并返回一個(gè)布爾值。例如,Boolean(0)返回false,而Boolean(1)返回true。

          需要注意的是,除了上述情況外,其他情況下不會(huì)發(fā)生隱式的布爾值強(qiáng)制類型轉(zhuǎn)換。例如,在算術(shù)運(yùn)算或比較運(yùn)算中,即使操作數(shù)被隱式轉(zhuǎn)換為布爾值,也不會(huì)改變?cè)贾档念愋汀?/p>

          .JavaScript概念

          ??JavaScript是一種基于原型的面向?qū)ο蟮恼Z言。

          ??同時(shí),因?yàn)镴avaScript是腳本語言,而腳本語言又是一種解釋性的語言,

          ??所以JavaScript是逐行執(zhí)行的同時(shí)也具有解釋型語言的特點(diǎn):不需要編譯可以直接使用,由解釋器來負(fù)責(zé)解釋。

          2.JavaScript特點(diǎn)

          (1)面向?qū)ο?/strong>

          ??JavaScript 語言標(biāo)準(zhǔn)已經(jīng)明確說明,JavaScript 是一門面向?qū)ο蟮恼Z言;

          ??JavaScript是否屬于“面向?qū)ο蟮恼Z言”一直飽受爭議,一些爭論中,有人強(qiáng)調(diào),JavaScript 并非“面向?qū)ο蟮恼Z言”,而是“基于對(duì)象的語言”,這個(gè)說法也一度流傳甚廣。JavaScript 的對(duì)象設(shè)計(jì)跟目前主流基于類的面向?qū)ο蟛町惙浅4蟆6聦?shí)上,這樣的對(duì)象系統(tǒng)設(shè)計(jì)雖然特別,但是 JavaScript 提供了完全運(yùn)行時(shí)的對(duì)象系統(tǒng),這使得它可以模仿多數(shù)面向?qū)ο缶幊谭妒剑运彩钦y(tǒng)的面向?qū)ο笳Z言。而因?yàn)榕c基于類的面向?qū)ο蟮牟町悾覀円卜QJavaScript 為基于原型的面向?qū)ο蟆?/p>

          (2)腳本語言

          ??又被稱為動(dòng)態(tài)語言,只在被調(diào)用時(shí)進(jìn)行解釋或編譯。在程序的運(yùn)行過程中逐行解釋執(zhí)行。

          (3)解釋性語言

          ??不需要編譯可以直接使用,由宿主環(huán)境(瀏覽器)解釋執(zhí)行。

          我自己是一名從事了多年開發(fā)的web前端老程序員,目前辭職在做自己的web前端私人定制課程,今年年初我花了一個(gè)月整理了一份最適合2019年學(xué)習(xí)的web前端學(xué)習(xí)干貨,各種框架都有整理,送給每一位前端小伙伴,想要獲取的可以關(guān)注我的頭條號(hào)并在后臺(tái)私信我:前端,即可免費(fèi)獲取。

          (4)事件驅(qū)動(dòng)

          ??JavaScript對(duì)用戶的響應(yīng),是以事件驅(qū)動(dòng)的方式進(jìn)行的。在網(wǎng)頁(Web Page)中執(zhí)行了某種操作所產(chǎn)生的動(dòng)作,被稱為“事件”(Event)。例如按下鼠標(biāo)、移動(dòng)窗口、選擇菜單等都可以被視為事件。當(dāng)事件發(fā)生后,可能會(huì)引起相應(yīng)的事件響應(yīng),執(zhí)行某些對(duì)應(yīng)的腳本,這種機(jī)制被稱為“事件驅(qū)動(dòng)”。

          (5)動(dòng)態(tài)性

          ??語言的動(dòng)態(tài)性,是指程序在運(yùn)行時(shí)可以改變其結(jié)構(gòu)。在一個(gè) JavaScript 對(duì)象中,要為一個(gè)屬性賦值時(shí),我們不必事先創(chuàng)建一個(gè)變量,只需要在使用的時(shí)候做賦值操作即可。

          (6)弱類型&松散類型

          ?? 弱類型語言聲明數(shù)據(jù)時(shí)不需要指定數(shù)據(jù)類型,一個(gè)變量可以賦不同數(shù)據(jù)類型的值,不同類型數(shù)據(jù)在計(jì)算過程中會(huì)自動(dòng)進(jìn)行轉(zhuǎn)換,在參與運(yùn)算的過程中,JavaScript會(huì)將其自動(dòng)轉(zhuǎn)換為數(shù)據(jù)類型,比如JavaScript中布爾類型的數(shù)據(jù)可以直接參與運(yùn)算。

          (7)單線程與異步處理共存

          ??單線程程序的執(zhí)行順序是從上到下依次執(zhí)行,一個(gè)程序中只可以執(zhí)行一個(gè)程序。而異步處理不用阻塞當(dāng)前線程來等待處理完成,而是允許后續(xù)操作,直至其它線程將處理完成。二者看起來相互矛盾,不能夠同時(shí)存在,可是JavaScript以一種巧妙地方式用單線程實(shí)現(xiàn)了異步處理的效果。

          ??在JavaScript的主線程和任務(wù)隊(duì)列中間還存在一個(gè)WebAPIs,這個(gè)WebAPIs是瀏覽器單獨(dú)為處理JavaScript的異步任務(wù)開辟的線程。當(dāng)主線程棧中的函數(shù)需要異步處理的時(shí)候,主線程會(huì)把需要異步的部分推給WebAPIs,這部分異步由瀏覽器去執(zhí)行,執(zhí)行完異步之后將處理后的結(jié)果以事件的形式丟到任務(wù)隊(duì)列中,這個(gè)事件就是我們寫代碼時(shí)的“回調(diào)函數(shù)”。

          (8)跨平臺(tái)

          ??JavaScript依賴于瀏覽器本身,與操作環(huán)境無關(guān)。

          (9)安全性語言

          ??JavaScript是一種安全性語言,它不允許訪問本地的硬盤,并不能將數(shù)據(jù)存入到服務(wù)器上,不允許對(duì)網(wǎng)絡(luò)文檔進(jìn)行修改和刪除,只能通過瀏覽器實(shí)現(xiàn)信息瀏覽或動(dòng)態(tài)交互。從而有效地防止數(shù)據(jù)的丟失。

          3.javaScript的核心

          ??JavaScript 的三大核心為ECMAScript、DOM 和 BOM。

          ??ECMAScript(核心):

          ????描述了該語言的語法和基本對(duì)象,ECMAScript是一種由Ecma國際(前身為歐洲計(jì)算機(jī)制造商協(xié)會(huì),European Computer Manufacturers Association)通過ECMA-262標(biāo)準(zhǔn)化的腳本程序設(shè)計(jì)語言。這種語言在萬維網(wǎng)上應(yīng)用廣泛,它往往被稱為JavaScript或JScript,所以它可以理解為是JavaScript的一個(gè)標(biāo)準(zhǔn),但實(shí)際上后兩者是ECMA-262標(biāo)準(zhǔn)的實(shí)現(xiàn)和擴(kuò)展。

          ??DOM(文檔對(duì)象模型):

          ????描述了處理網(wǎng)頁內(nèi)容的方法和接口;是W3C組織推薦的處理可擴(kuò)展置標(biāo)語言的標(biāo)準(zhǔn)編程接口。是一種與平臺(tái)和語言無關(guān)的應(yīng)用程序接口(API),它可以動(dòng)態(tài)地訪問程序和腳本,更新其內(nèi)容、結(jié)構(gòu)和www文檔的風(fēng)格(目前,HTML和XML文檔是通過說明部分定義的)。

          ??BOM(瀏覽器對(duì)象模型):

          ????描述了與瀏覽器進(jìn)行交互的方法和接口;用于描述這種對(duì)象與對(duì)象之間層次關(guān)系的模型,瀏覽器對(duì)象模型提供了獨(dú)立于內(nèi)容的、可以與瀏覽器窗口進(jìn)行互動(dòng)的對(duì)象結(jié)構(gòu)。BOM由多個(gè)對(duì)象組成,其中代表瀏覽器窗口的Window對(duì)象是BOM的頂層對(duì)象,其他對(duì)象都是該對(duì)象的子對(duì)象。

          4.javaScript的使用

          html頁面中寫在<script></script>標(biāo)簽內(nèi)

          引入外部.js文件

          ??引入的多個(gè)js文件,會(huì)按順序分開執(zhí)行。同樣的,對(duì)于不同<script>標(biāo)簽嵌入的JavaScript代碼,也會(huì)根據(jù)腳本標(biāo)簽<script>的出現(xiàn)順序來分開執(zhí)行。由于JavaScript通常需要操作DOM,所以,一般把JavaScript放在前或者文檔結(jié)尾處引入。若需要在中引入,可以通過修改window.onload或者document.ready事件,強(qiáng)制等到DOM加載完成后再執(zhí)行相關(guān)函數(shù)。

          5.javaScript的執(zhí)行順序

          ??JavaScript代碼執(zhí)行分為兩個(gè)部分:

          預(yù)編譯階段,進(jìn)行代碼的檢查裝載,同樣也是按從上到下按順序進(jìn)行的。此階段只進(jìn)行變量和函數(shù)的聲明,會(huì)跳過執(zhí)行語句,不對(duì)變量進(jìn)行賦值,變量的默認(rèn)值為undefined。即使聲明是在調(diào)用的下方進(jìn)行的,但瀏覽器仍然先聲明再調(diào)用(執(zhí)行),這個(gè)現(xiàn)象叫做“聲明提升”。所以,即便一個(gè)函數(shù)的聲明在函數(shù)調(diào)用的下方,前面仍然可以正常執(zhí)行這個(gè)函數(shù),需要注意的是函數(shù)聲明的提升優(yōu)先于變量聲明的提升。(js代碼的執(zhí)行是讀一行代碼執(zhí)行一行,但在執(zhí)行之前系統(tǒng)會(huì)先對(duì)js進(jìn)行全面掃描檢查是否存在低級(jí)的語法錯(cuò)誤,并不會(huì)立即執(zhí)行語句。)

          原文鏈接:https://blog.csdn.net/qq_28453669/article/details/103211948

          作者:Simeow


          主站蜘蛛池模板: 国产成人AV一区二区三区无码| 国产福利一区二区三区在线观看| 日韩精品区一区二区三VR| 久久久久久人妻一区精品| 精品一区狼人国产在线| 日本一区二区三区精品中文字幕| 国产伦精品一区三区视频| 成人区精品一区二区不卡亚洲| 精品福利一区二区三| 精品国产一区二区22| 国产一区二区三区免费在线观看| 精品久久久久久无码中文字幕一区| 在线精品亚洲一区二区小说| 亚洲AV无码一区二三区| 精品无码中出一区二区| 精品国产精品久久一区免费式| 竹菊影视欧美日韩一区二区三区四区五区 | 日韩成人无码一区二区三区 | 一区二区三区视频在线| 亚洲AV综合色一区二区三区| 国产在线精品一区二区三区不卡 | 亚洲Av无码一区二区二三区| 色窝窝无码一区二区三区成人网站 | av无码一区二区三区| 精品一区中文字幕| 精品综合一区二区三区| 亚洲第一区精品观看| 成人乱码一区二区三区av| 亚洲国产精品成人一区| 在线精品亚洲一区二区三区| 国模少妇一区二区三区| 色一乱一伦一图一区二区精品| 日韩精品无码一区二区中文字幕| 日本午夜精品一区二区三区电影 | 国内精品视频一区二区三区| 国产无人区一区二区三区| 一区二区视频在线免费观看| 国产一区二区视频在线播放| 风间由美性色一区二区三区 | 国产在线精品一区二区三区不卡 | 在线免费视频一区二区|