無(wú)標(biāo)題文章

[toc]?

?##1、基礎(chǔ)知識(shí)>ECMAScript(ES):規(guī)定了JS的一些基礎(chǔ)核心的知識(shí)(變量、數(shù)據(jù)類(lèi)型、語(yǔ)法規(guī)范、操作語(yǔ)句等)>DOM:document object model 文檔對(duì)象模型,里面提供了一些屬性和方法,可以讓我們操作頁(yè)面中的元素>BOM:browser object model 瀏覽器對(duì)象模型,里面提供了一些屬性和方法,可以讓我們操作瀏覽器###常用瀏覽器內(nèi)核瀏覽器的內(nèi)核是分為兩個(gè)部分的,一是渲染引擎,另一個(gè)是JS引擎?,F(xiàn)在JS引擎比較獨(dú)立,內(nèi)核更加傾向于說(shuō)渲染引擎。>- webkit內(nèi)核(V8引擎)> - 谷歌> - 大部分移動(dòng)端瀏覽器> - 國(guó)內(nèi)大部分瀏覽器 360 QQ UC 獵豹 搜狗> - NODE基于V8來(lái)渲染JS>- Gecko 火狐瀏覽器>- Presto 歐朋瀏覽器> - Trident IE瀏覽器###數(shù)據(jù)類(lèi)型的分類(lèi)和檢測(cè)@[基本數(shù)據(jù)類(lèi)型, 執(zhí)行步驟:, 引用數(shù)據(jù)類(lèi)型] + Number + String + bloean + null:空對(duì)象指針 + undefined:未定義@[引用數(shù)據(jù)類(lèi)型] + function 函數(shù)類(lèi)型 + object對(duì)象數(shù)據(jù)類(lèi)型: + {}普通對(duì)象 + 數(shù)組 + /$/ 正則[對(duì)象數(shù)據(jù)類(lèi)型:是把描述同一事物的屬性和方法放在一個(gè)內(nèi)存空間中,起到了分組的作用]####檢測(cè)數(shù)據(jù)類(lèi)型- typeof:檢測(cè)數(shù)據(jù)類(lèi)型的運(yùn)算符- instanceof:檢測(cè)某個(gè)實(shí)例是否屬于這個(gè)類(lèi)- constructor:獲取當(dāng)前實(shí)例的構(gòu)造器- Object.prototype.toString.call:獲取當(dāng)前實(shí)例所屬的類(lèi)信息>Object.prototype.toString.call()方法測(cè)出的結(jié)果最準(zhǔn)確,其他都有局限性,得出的結(jié)果`[object 所屬類(lèi)型]````Object.prototype.toString.call()==({}).toString.call()//true//每個(gè)類(lèi)都是函數(shù) 只是函數(shù)名稱(chēng)不同Object.toString()==Function.toString();//false```**typeof**:結(jié)果返回的是一個(gè)字符串,字符串內(nèi)包含的是數(shù)據(jù)類(lèi)型- typeof 的局限性 - ==typeof null 的檢測(cè)結(jié)果不是‘null' 而是’object': 而null是基本數(shù)據(jù)類(lèi)型 ,并不是object== - 使用typeof 無(wú)法具體區(qū)分出到底是數(shù)組還是正則或普通對(duì)象###Boolean>- 把其他類(lèi)型轉(zhuǎn)換為布爾類(lèi)型>- 只有==0,NaN,空字符串、null、undefined==為false;其余都是true;>>- ! 或者 !!的意義>`?。合葘?shù)據(jù)類(lèi)型轉(zhuǎn)化為布爾值,再取反`>`!!:兩次取反相當(dāng)于沒(méi)有取反,只是把數(shù)據(jù)類(lèi)型轉(zhuǎn)化為布爾類(lèi)型`!null => true!!undefined =>false ###Number@`[NaN]`>- js中新增了一個(gè)數(shù)據(jù)類(lèi)型:NaN(not a number 不是一個(gè)有效數(shù)字,但是屬于number) > + typeof NaN =>'number' >- `NaN!=NaN NaN和任何值都不等`@`[isNaN]` >isNaN:用來(lái)檢測(cè)這個(gè)值==是否不是有效數(shù)字==,如果不是,則為true,反之,則為false>當(dāng)時(shí)使用isNaN檢測(cè)時(shí),()中如果不是number類(lèi)型:>基本數(shù)據(jù)類(lèi)型:==先將其他類(lèi)型值轉(zhuǎn)化為Number類(lèi)型值==再運(yùn)算>對(duì)象數(shù)據(jù)類(lèi)型:==先將對(duì)其調(diào)用toString方法,再轉(zhuǎn)化為Number類(lèi)型值==@`[Number]`>- 使用Number把字符串轉(zhuǎn)換為數(shù)字的時(shí)候,空字符串是零,其它字符串中如果出現(xiàn)的字符代表純數(shù)字可以轉(zhuǎn)為正常的數(shù)字,如果出現(xiàn)了任何一個(gè)非有效數(shù)字的字符,最后的結(jié)果都是NaN>- 將引用類(lèi)型轉(zhuǎn)化數(shù)據(jù)類(lèi)型時(shí),先將其轉(zhuǎn)化為字符串,后再轉(zhuǎn)化為number;({name:'zxt'}).toString() =>"[object Object]"Number(undefined) =>NaN@`[parseInt()]`>將其他類(lèi)型值轉(zhuǎn)換number,和Number不同,提取規(guī)則:從左至右依次查找有效數(shù)字字符,直到遇見(jiàn)非有效字符為止(不管后面還有沒(méi)數(shù)字)> - parseInt('12px') =>12> - parseInt('px1') =>NaN> - parseInt('122.3') =>122@`[parseFloat()]`> 與parseInt不同的是支持小數(shù)> + parseFloat('12.34pxc')= 12.34`由于浮點(diǎn)數(shù)不是精確的值,所以涉及小數(shù)的比較和運(yùn)算要特別小心````0.1 + 0.2 === 0.3// false0.3 / 0.1// 2.9999999999999996```@`[toFixed()]`>控制數(shù)字保留小數(shù)點(diǎn)后面幾位```1.var num = parseFloat('width:12.5px'); //=>NaN2.if(num==12.5){3. alert(12.5);4.}else if(num==NaN){//=> NaN!=NaN5. alert(NaN);6.}else if(typeof num=='number'){//=> typeof NaN->'number'7. alert(0);//=>'0'8.}else{9. alert('啥也不是!');10.}```#####null 和 undefinednull: 沒(méi)有,沒(méi)有開(kāi)辟內(nèi)存空間undefined: 未定義"" : 空字符串,什么都沒(méi)有,但是開(kāi)辟了內(nèi)存空間null:什么都沒(méi)有,但一般都是自己手動(dòng)賦值的,后期再自己賦值unfefined:完全不在預(yù)期之內(nèi)###Object`對(duì)象是由0到多組鍵值對(duì)組成的,每一組之間用逗號(hào)分離`>每一個(gè)對(duì)象數(shù)據(jù)類(lèi)型,都是有0到多組的屬性名和屬性值組成的>屬性名:描述當(dāng)前對(duì)象具備的某些特征(數(shù)字/字符串格式)>屬性值:具體特征的值(任何數(shù)據(jù)類(lèi)型)> >操作一個(gè)對(duì)象的屬性有2種方式 >`obj['key']` >`obj.key`(屬性名是數(shù)字不可以使用這種方法)**創(chuàng)建對(duì)象**>字面量方式:var obj={}>構(gòu)造函數(shù)方式:var obj=new Object();**對(duì)象鍵值對(duì)的操作:增、刪、改、查**>var obj = {};>obj.name = 'zxt';//=>增加一個(gè)叫做NAME的屬性,屬性值是:'zxt'>obj['name'] = 29;//=>修改NAME對(duì)應(yīng)的屬性值:`一個(gè)對(duì)象的屬性名是不能重復(fù)的`,之前沒(méi)有這個(gè)屬性,我們的操作是增加操作,之前有這個(gè)屬性,當(dāng)前操作就是在修改現(xiàn)有屬性名的屬性值>obj.age = null; //=>假刪除:把屬性值設(shè)置為空,但是屬性名是存在的 <=> obj['age'] = null =>獲取age的屬性值結(jié)果是null>delete obj.age;//=>真刪除:把屬性名和屬性值徹底從對(duì)象中移除掉 =>獲取age的屬性值結(jié)果是undefined>`獲取一個(gè)對(duì)象某一個(gè)屬性名對(duì)應(yīng)的屬性值,如果當(dāng)前這個(gè)屬性在對(duì)象中并不存在,獲取的結(jié)果是undefined`**`obj[name]和obj['name']的區(qū)別`**```//-> age:變量名,代表的是它存儲(chǔ)的值//-> 'age':常量,字符串的具體值var age = 'name';var obj = {name:'zhufeng',age:8};console.log(obj.age); =>8console.log(obj['age']); =>8console.log(obj[age]); => obj[age變量] =>obj['name'] =>獲取name屬性名的屬性值 =>'zhufeng'```####Object.keys:>Object.keys 返回一個(gè)所有元素為`字符串的數(shù)組`,其元素來(lái)自于從給定的對(duì)象上面可直接枚舉的屬性。這些屬性的順序與手動(dòng)遍歷該對(duì)象屬性時(shí)的一致。`可以用來(lái)判斷對(duì)象是否為空:Object.keys(obj).length````let obj = { 0 : "a", 1 : "b", 2 : "c"};console.log(Object.keys(obj));// ['0', '1', '2']```###函數(shù)數(shù)據(jù)類(lèi)型>函數(shù)數(shù)據(jù)類(lèi)型也是按照引用地址來(lái)操作的>函數(shù):具備一定功能的方法###基本數(shù)據(jù)類(lèi)型和引用數(shù)據(jù)類(lèi)型的區(qū)別>JS是運(yùn)行在瀏覽器中的(內(nèi)核引擎),==瀏覽器會(huì)給JS提供一個(gè)賴(lài)以生存的環(huán)境==,所以我們把這個(gè)環(huán)境叫做==全局作用域 window(global是后臺(tái)的)==>>JS代碼是自上而下依次執(zhí)行的基本數(shù)據(jù)類(lèi)型是==按值==操作的:基本數(shù)據(jù)類(lèi)型再賦值時(shí),是直接把值賦值給變量即可var a=12;var b=a; // b=12 把變量a存的值賦值給變量bb=13;alert(a); //a=12`引用數(shù)據(jù)類(lèi)型是按空間地址(引用地址)來(lái)操作的:`var n={name:'主動(dòng)'}; 1、先創(chuàng)建一個(gè)變量n; 2.瀏覽器首先會(huì)開(kāi)辟一個(gè)存儲(chǔ)空間(內(nèi)存空間),是把對(duì)象中需要存儲(chǔ)的鍵值對(duì)分別存儲(chǔ)在這個(gè)空間中,后期為了方便找到這個(gè)空間,瀏覽器會(huì)給空間設(shè)個(gè)地址(16進(jìn)制);3、把空間的地址賦值給變量;所以n存儲(chǔ)的是一個(gè)引用地址,并不是一個(gè)具體的值![Alt text](./1513571080711.png)###&&邏輯與||邏輯或- 在條件判斷中&&:所有都為真,才是真||:只要一個(gè)為真,就是真- 在賦值操作中||: a||b;看a的真假,a為真,則返回a的值,a為假,則返回b,不管b是什么&&:a&&b, a為假,則返回a的值,a為真,則返回b,不管b是什么真實(shí)項(xiàng)目中應(yīng)用邏輯或?qū)崿F(xiàn)默認(rèn)值的設(shè)置操作邏輯與的優(yōu)先權(quán)高于邏輯或###JavaScript常用的操作語(yǔ)句>通過(guò)一系列的邏輯判斷,來(lái)完成特定的事情>for循環(huán)>if循環(huán):當(dāng)在判斷的操作中,很多條件都是符合的,執(zhí)行完成第一個(gè)符合的條件后,后面的條件不管是否符合都不在處理了####for in 循環(huán)@`用來(lái)遍歷(循環(huán))對(duì)象鍵值對(duì)的, '循環(huán)數(shù)組中的每一項(xiàng)', '條件?條件成立執(zhí)行:條件不成執(zhí)行`;, 執(zhí)行步驟:]>key存儲(chǔ)的值都是字符串格式,key中存的是屬性名>在for in 循環(huán)遍歷時(shí),大部分瀏覽器都是先把對(duì)象中的鍵值對(duì)進(jìn)行排序(整數(shù)數(shù)字在前,由小到大,其余按原來(lái)編寫(xiě)順序排列)(小數(shù)算作字母,不算數(shù)字)>`for in循環(huán)會(huì)遍歷對(duì)象原型上的方法`> itin [Tab] for in 循環(huán)快捷鍵####三元運(yùn)算符>@`['條件?條件成立執(zhí)行:條件不成執(zhí)行;]`是簡(jiǎn)單的if、else的另外一種寫(xiě)法>如果某種情況并不需要做處理,我們可以用null,undefined,void 0占位即可>某一情況執(zhí)行多條操作,使用()包起來(lái),每一項(xiàng)處理的事情之間用逗號(hào)分隔>在三元運(yùn)算符中不能出現(xiàn)==break/continue/return== 會(huì)出現(xiàn) SyntaxErrorr 語(yǔ)法錯(cuò)誤####switch case>也是if else某種特定情況的簡(jiǎn)寫(xiě),可以在switch 語(yǔ)句中使用任何數(shù)據(jù)類(lèi)型(在很多其他語(yǔ)言中只能使用數(shù)值),無(wú)論是字符串,還是對(duì)象都沒(méi)有問(wèn)題。其次,每個(gè) case 的值不一定是常量,可以是變量,甚至是表達(dá)式。>每一種case情況結(jié)束都需要加break,達(dá)到條件成立處理完成,跳出當(dāng)前判斷`每一種case情況的比較都是使用===進(jìn)行比較的:絕對(duì)相等``=:賦值,變量=值``==:比較,值==值``絕對(duì)比較,值===`如果左右兩邊比較的值是相同類(lèi)型的,那么直接比較內(nèi)容是否一樣即可;如果兩邊值的類(lèi)型不一樣,`==和===是有區(qū)別的`:===類(lèi)型不一樣,最后的結(jié)果就是false,更加的嚴(yán)謹(jǐn) ==類(lèi)型不一樣,瀏覽器首先會(huì)默認(rèn)的把類(lèi)型轉(zhuǎn)化為一樣的,然后再比較內(nèi)容,相對(duì)松散一些####for循環(huán)語(yǔ)句`for(初始值;驗(yàn)證條件;步長(zhǎng)累加){ 循環(huán)體}`@[執(zhí)行步驟:]>設(shè)置初始值>驗(yàn)證條件>條件成立執(zhí)行循環(huán)體,否則推出循環(huán)>步長(zhǎng)累加>驗(yàn)證條件>···············>沒(méi)有步長(zhǎng)累加會(huì)陷入死循環(huán)`for循環(huán)與for in循環(huán)的區(qū)別:for in 循環(huán)可以遍歷到原型上的公有屬性,而for循環(huán)只能遍歷私有的屬性`騰訊面試題```1.for(var i=0;i<10;i+=2){2. if(i<=5){3. i++;4. continue;5. }else{6. i--;7. break;8. }9. console.log(i);10.}11.console.log(i); //=>5```

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 第5章 引用類(lèi)型(返回首頁(yè)) 本章內(nèi)容 使用對(duì)象 創(chuàng)建并操作數(shù)組 理解基本的JavaScript類(lèi)型 使用基本類(lèi)型...
    大學(xué)一百閱讀 3,674評(píng)論 0 4
  • 轉(zhuǎn)至元數(shù)據(jù)結(jié)尾創(chuàng)建: 董瀟偉,最新修改于: 十二月 23, 2016 轉(zhuǎn)至元數(shù)據(jù)起始第一章:isa和Class一....
    40c0490e5268閱讀 2,041評(píng)論 0 9
  • width: 65%;border: 1px solid #ddd;outline: 1300px solid #...
    邵勝奧閱讀 5,148評(píng)論 0 1
  • JAVA面試題 1、作用域public,private,protected,以及不寫(xiě)時(shí)的區(qū)別答:區(qū)別如下:作用域 ...
    JA尐白閱讀 1,261評(píng)論 1 0
  • 1.釋義 翻譯 ,理解為,意思是 Only a small number of Kadare's books ha...
    AG皓閱讀 604評(píng)論 0 0

友情鏈接更多精彩內(nèi)容