數(shù)據類型

undefined:聲明但是沒有賦值,本應該有值

1.變量被聲明了庭瑰,但沒有賦值時局装,就等于undefined藕施。

2.對象沒有聲明或者賦值的屬性,該屬性的值為undefined藻茂。

3.函數(shù)沒有提供參數(shù)或者返回值驹暑,默認為undefined(擴展知識)。

null:表示"沒有對象"辨赐,即該處不應該有值

1.作為函數(shù)的參數(shù)优俘,表示該函數(shù)的參數(shù)不是對象(擴展知識)。

2.作為對象原型鏈的終點(擴展知識)掀序。

Number:

1.正數(shù)帆焕、負數(shù)、0不恭、小數(shù)

2.NaN:不是一個數(shù)字

isNaN:如果檢測值不是數(shù)字類型叶雹,瀏覽器先轉成數(shù)字類型,再判斷

NaN==NaN返回false

var a=Number("12px");

if(a==12){

console.log("a=12");

}else if(a==NaN){

console.log("a不是一個數(shù)字");

}else{

console.log("以上都不成立");

}

3.強制數(shù)據類型轉換:Number,可以轉換任意類型為數(shù)字换吧,如果是字符串折晦,比如是純數(shù)字字符串,不能含有其他字符沾瓦。

4.非強制數(shù)據類型轉換:parseInt\parseFloat满着,只能轉換字符串或者數(shù)字」彷海可以含有其他字符风喇,但是數(shù)字必須開頭。

從左到右乖篷,一個一個字符查找响驴,把字符串轉化成數(shù)字透且,如果遇到非數(shù)字撕蔼,就不再查找豁鲤。

5.float類型bug(擴展知識)

0.1+0.02==0.3

0.8*7==5.6

解決辦法:toFixed

.Boolean

1.!:將值轉成布爾類型,然后取反

2.!!:將值轉成布爾類型鲸沮,相當于Boolean

3.如果只有一個值:只有0,NaN,null,undefined,""返回false,其他全部返回true琳骡。

2.比較規(guī)則:

1.對象與對象比較永遠不相等。[]==[] {}=={} 3=="3"

2.基本數(shù)據類型比較 只要值相等就相等

3.對象與字符串比較,先將對象轉成字符串 []==""

4.對象與Boolean比較讼溺,對象轉成字符串楣号,然后轉成數(shù)字,Boolean也轉化成數(shù)字比較

5.對象與數(shù)字比較怒坯,對象轉成字符串炫狱,轉數(shù)字,然后與數(shù)字比較

6.數(shù)字==布爾剔猿,布爾轉成數(shù)字

7.字符串==數(shù)字视译,字符串轉數(shù)字

8.字符串==布爾,都轉化成數(shù)字

9.null==undefined,true,與其他所有類型都不等

10.===比較數(shù)據類型归敬,==轉成同一個數(shù)據類型比較

字符串

1.定義

2.轉義符

\n \r \t \b? \\ \' \''

3.轉字符串:

.toString()

String()

4.字符串是不可變的引用類型

5.字符串常用方法(API):

substr

substring

replace

replaceAll

Object

1.由多組屬性名\屬性值組成(多個鍵值對key\value組成)

2.對象的兩種創(chuàng)建方式(json字面量創(chuàng)建酷含,new實例創(chuàng)建)

3.JSON類型:JSON.parse,JSON.stringify

4.數(shù)組類型:Array,常用屬性和方法汪茧,訪問方法

5.屬性增刪改查,屬性不能重復

兩種方式訪問屬性

假刪除\真刪除

6.對象細分:Object,RegExp,String,Boolean,Date,Array,Function,Math等對應的實例

對象椅亚、類、實例

變量

1.變量:可變的量舱污,用來存儲值和代表值

2.定義方法:后臺定義方法呀舔,前臺定義方法

3.=是賦值操作,左側是變量名扩灯,右側是存儲的值

4.松散數(shù)據類型

2.數(shù)據類型:

1.typeof用來判斷六中數(shù)據類型

2.基本數(shù)據類型:number,string,boolean,null,undefined

3.引用數(shù)據類型:object,array,function,regexp,Date,包裝對象,Math,Globle

數(shù)據類型檢測

1.例子

var num=12;

num2=num;

num2++;

console.log(num2);

//++num2

//num2+=num2;

var obj={name:"zhufeng"};

var obj2=obj;

obj2.name="zhufengpeixun";

console.log(obj);

2.結構存儲

1.內存存儲數(shù)據的兩個邏輯組成部分:堆與棧

棧(stack):有限的空間别威,不可變大小,操作速度快驴剔,線性表省古,先進先出。不僅僅是變量丧失,執(zhí)行環(huán)境等都可以存在于堆中豺妓,由系統(tǒng)自動分配。

堆(heap):空間相對比較大布讹,可變大小空間琳拭,map形式存儲(key,value),通過new手動分配(部分對象可以不用new聲明分配)

2.堆與棧的功能:

棧負責保存我們的少量數(shù)據代碼與數(shù)據引用和代碼執(zhí)行路徑

堆則負責保存大量數(shù)據對象描验。

3.內存地址:0x+八位數(shù)字

3.數(shù)據在內存中的存儲

1.引用類型總是放在堆中白嘁。

2.值類型總是存在于棧中。

3.指針總是存在于它聲明的地方膘流。

4.基本數(shù)據類型和引用數(shù)據類型區(qū)別

1.基本數(shù)據類型把值直接賦給變量絮缅。接下來操作過程中鲁沥,直接使用值操作。兩個基本數(shù)據類型沒有什么關系耕魄。

2.引用數(shù)據類型:

1.在定義一個變量

2.開辟一個新的空間画恰,把屬性名和屬性值存在這個空間中。

3.把空間地址賦給變量吸奴。

4.連個引用類型相等引用的同一個內存空間的值允扇,一個改變,另外一個也跟著改變则奥。

5.如果一個變量斷開引用考润,重新賦值,另一個變量不受影響

5.數(shù)據類型檢測

1.typeof:返回數(shù)據類型字符串读处,不能檢查object下細分的類型额划。可以檢查函數(shù)和null(例子:多個typeof嵌套)

2.instanceof

3.Object.prototype.toString.call();(擴展知識)

4.constructor([].constructor===Array)(擴展知識)

if.4個判斷語法

1.if档泽、else:能完成所有的判斷

if判斷條件可以是表達式俊戳,也可以是一個值,也可以是多個表達式

重點:判斷代碼塊內部聲明的變量外部也可以訪問馆匿,所以全局變量不要以i~n字母命名

2.三元運算符:多值單條件判斷

false?console.log("1"):void(0)

3.switch:單值多條件判斷

break與不寫break

條件判斷:===

4.&&:多值單條件簡單判斷

&&和|| 多值判斷

2.js判斷的應用(開關燈)

1.獲取body

document:上下文context

document.getElementById:只能獲得一個

get element by id

2.讓body有個點擊事件

3.點擊時候讓body顏色改變

4.用if else switch 三元運算符來實現(xiàn)


1.for 四部曲:

1.聲明賦值變量 var i=0;

2.執(zhí)行判斷條件 i<5

3.執(zhí)行{}內代碼

4.執(zhí)行i++部分

聲明變量可以在外部訪問抑胎。

賦值區(qū)、判斷區(qū)渐北、操作區(qū)都可以寫多個表達式

5.退出雙重循環(huán)

2.循環(huán)邏輯控制語句:break/continue;

break:直接退出循環(huán)阿逃,不執(zhí)行下次循環(huán),不執(zhí)行i++部分

continue:終止當前循環(huán)赃蛛,執(zhí)行下一次循環(huán)

3.練習題:

for(var i=0;i<10;i++){

if(i<=5){

i=i+2;

continue;

}

i=i+5;

break;

console.log(i);

}

console.log(i);

2. forin while dowhile

1.forin

key value:有多少個屬性恃锉,就遍歷多少次,不管是對象屬性還是原型屬性

迭代會先迭代數(shù)字呕臂,后迭代屬性破托,最后迭代原型屬性

for in循環(huán)中想獲取我們的屬性名,只能用[]歧蒋,不能用.土砂,因為不確定是否存在數(shù)字屬性名

2.while

3.dowhile

3.隔行變色,三行變色

1.用for,forin,while,dowhile實現(xiàn)

2.用多種判斷方式實現(xiàn)

3.鼠標移入改變顏色


函數(shù)

function:函數(shù)數(shù)據類型,相當于一個方法或者一個功能

函數(shù)別名:方法谜洽,如果被當作事件處理函數(shù)萝映,又稱作句柄

1.定義一個函數(shù)(計劃一段代碼,定義一個模板)

1.在內存堆中開辟一個內存空間

2.把函數(shù)體js代碼當作字符串存在內存中間內(如果函數(shù)只定義阐虚,沒執(zhí)行的話,沒有任何意義)

3.堆棧中的函數(shù)名對應地址实束,地址引用

4.當一個函數(shù)執(zhí)行時候奥秆,執(zhí)行環(huán)境被推入內存中逊彭,這個過程叫做壓棧析显。

2.執(zhí)行函數(shù)(執(zhí)行計劃)

1.在堆棧中開辟一片空間谷异,這個空間叫做執(zhí)行環(huán)境

2.把存儲空間的js代碼字符串當作代碼運行

3.function 作用:

1.防止代碼重復

2.將代碼進行封裝歹嘹,代碼沒有必要重新編寫尺上,只需要執(zhí)行以下函數(shù)即可材蛛。

3.隱藏變量,創(chuàng)建私有變量

4.創(chuàng)建類

4.參數(shù):求1+1的和(形參:可以理解成一個變量)(多態(tài):一個功能的多重形態(tài)怎抛,通過參數(shù)實現(xiàn)不同的功能)

function sum(){

var total=1+1;

console.log(total);

}

sum();

1.形參的作用:實現(xiàn)一個功能卑吭,發(fā)現(xiàn)部分原材料沒有,置頂計劃時候沒有辦法獲取马绝,需要從外部獲取豆赏。

這時候我們需要把原材料定義在形參上,在執(zhí)行計劃的時候富稻,只提供原材料就好了掷邦。

2.定義一個形參,沒有傳遞值椭赋,默認值:undefined抚岗,傳遞參數(shù)檢測,沒有重載

function sum(num1,num2){

if(typeof num1==="undefined"){

total+=num1;

}

if(typeof num2==="undefined"){

total+=num2;

}

console.log(total);

}

3.arguments:函數(shù)內置接受參數(shù)機制,類數(shù)組(數(shù)字作為索引哪怔,索引從0開始苟跪,代表第幾個傳遞的參數(shù))

//內置:天生存在的,不管你傳遞參數(shù)沒有蔓涧,都會有這個對象的存在

console.dir(arguments);

[0],length,callee:代表當前函數(shù)本身

4.函數(shù)執(zhí)行時候件已,會在內部實現(xiàn)一個私有地盤,只有在這個地盤內的代碼可以訪問私有變量元暴,外部代碼不可以訪問私有變量篷扩。

函數(shù)執(zhí)行時候會形成一個私有作用域保護里面的變量不受外界干擾,我們把這個機制叫做閉包茉盏。

arguments修改會修改形參內容鉴未,同理形參修改也會修改arguments枢冤。只有一種情況例外,

arguments的長度不是可變的铜秆,所以修改形參不會增加arguments.

5.外部如何訪問total?return

在外部想訪問什么值淹真,函數(shù)內部return這個值就可以了.外面可以訪問這個結果或者對結果再進

行加工。

這個時候函數(shù)終止執(zhí)行连茧,控制函數(shù)函數(shù)體代碼執(zhí)行到什么位置結束核蘸。

如果我們沒有寫return,或者寫return;啸驯,默認返回值undefined

實名函數(shù)客扎、匿名函數(shù)、函數(shù)表達式和立即執(zhí)行函數(shù)

~,!,+,-與()都可以定義立即執(zhí)行函數(shù)

終止外部函數(shù)執(zhí)行

6.事件句柄

7.eval


數(shù)組

1.兩種創(chuàng)建方式

new Array(數(shù)組內容) //實例創(chuàng)建方式

[xx,xx,xx]? ? ? ? //字面量創(chuàng)建方式

console.dir([])

2.數(shù)組是由多個項組成的罚斗,每個項之間用逗號隔開徙鱼,每一項存儲的數(shù)據類型可以是任意數(shù)據類型

3.數(shù)組也是對象類型的,是由屬性名和屬性值組成

屬性名:數(shù)組中代表第幾項的編號针姿,也可以稱之為索引

4.輸出數(shù)組內容:

數(shù)組[索引項]:就是獲取數(shù)組中第索引+1項的對應的內容

length/['length']:獲取數(shù)組長度

如果索引超出索引項袱吆,會返回undefined

數(shù)組迭代,for 循環(huán)和for in 循環(huán)距淫,for循環(huán)聲明前兩個屬性實現(xiàn)數(shù)組迭代

1.添加方法

push:

shift:

pop:

unshift:

splice(實現(xiàn)shift,pop,unshift,push)

2.查詢和復制方法

slice(實現(xiàn)復制)

concat(實現(xiàn)復制)

3.轉字符串

toString

join

實現(xiàn)求和:eval(join("+"))

4.數(shù)組排序和排列

reverse

sort:原有數(shù)組也改變:只能處理10以內的數(shù)字排序

//由小到大

sort(function(a,b){

//a,b a代表每次循環(huán)當前項绞绒,b代表每次循環(huán)后續(xù)項

//通過冒泡排序的思想實現(xiàn)

return a-b;? ? ? ? ? ? ? ? ? ? ? ? ? ? ? //如果前面比后面大,這樣就交換位置

});

5.不兼容方法

map,forEach,indexOf等方法

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末溉愁,一起剝皮案震驚了整個濱河市处铛,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌拐揭,老刑警劉巖撤蟆,帶你破解...
    沈念sama閱讀 217,657評論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異堂污,居然都是意外死亡家肯,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,889評論 3 394
  • 文/潘曉璐 我一進店門盟猖,熙熙樓的掌柜王于貴愁眉苦臉地迎上來讨衣,“玉大人,你說我怎么就攤上這事式镐》凑颍” “怎么了?”我有些...
    開封第一講書人閱讀 164,057評論 0 354
  • 文/不壞的土叔 我叫張陵娘汞,是天一觀的道長歹茶。 經常有香客問我,道長,這世上最難降的妖魔是什么惊豺? 我笑而不...
    開封第一講書人閱讀 58,509評論 1 293
  • 正文 為了忘掉前任燎孟,我火速辦了婚禮,結果婚禮上尸昧,老公的妹妹穿的比我還像新娘揩页。我一直安慰自己,他們只是感情好烹俗,可當我...
    茶點故事閱讀 67,562評論 6 392
  • 文/花漫 我一把揭開白布爆侣。 她就那樣靜靜地躺著,像睡著了一般衷蜓。 火紅的嫁衣襯著肌膚如雪累提。 梳的紋絲不亂的頭發(fā)上尘喝,一...
    開封第一講書人閱讀 51,443評論 1 302
  • 那天磁浇,我揣著相機與錄音,去河邊找鬼朽褪。 笑死置吓,一個胖子當著我的面吹牛,可吹牛的內容都是我干的缔赠。 我是一名探鬼主播衍锚,決...
    沈念sama閱讀 40,251評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼嗤堰!你這毒婦竟也來了戴质?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 39,129評論 0 276
  • 序言:老撾萬榮一對情侶失蹤踢匣,失蹤者是張志新(化名)和其女友劉穎告匠,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體离唬,經...
    沈念sama閱讀 45,561評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡后专,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,779評論 3 335
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了输莺。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片戚哎。...
    茶點故事閱讀 39,902評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖嫂用,靈堂內的尸體忽然破棺而出型凳,到底是詐尸還是另有隱情,我是刑警寧澤嘱函,帶...
    沈念sama閱讀 35,621評論 5 345
  • 正文 年R本政府宣布甘畅,位于F島的核電站,受9級特大地震影響,放射性物質發(fā)生泄漏橄浓。R本人自食惡果不足惜粒梦,卻給世界環(huán)境...
    茶點故事閱讀 41,220評論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望荸实。 院中可真熱鬧匀们,春花似錦、人聲如沸准给。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,838評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽露氮。三九已至祖灰,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間畔规,已是汗流浹背局扶。 一陣腳步聲響...
    開封第一講書人閱讀 32,971評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留叁扫,地道東北人三妈。 一個月前我還...
    沈念sama閱讀 48,025評論 2 370
  • 正文 我出身青樓,卻偏偏與公主長得像莫绣,于是被迫代替她去往敵國和親畴蒲。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,843評論 2 354

推薦閱讀更多精彩內容