一共有六種數(shù)據(jù)類型:簡(jiǎn)單數(shù)據(jù)類型:number類型 字符串類型 布爾類型 null和undefined
復(fù)雜數(shù)據(jù)類型:數(shù)組(array)和對(duì)象(object)
number類型:
浮點(diǎn)數(shù):
var num = 0.1;
科學(xué)計(jì)數(shù)法:
//當(dāng)一次數(shù)字很大的時(shí)候柒竞,可以用科學(xué)計(jì)數(shù)法來(lái)表示
var num = 5e+5; //5乘以10的5次方
var num = 3e-3;//3乘以10的-3次方
- 科學(xué)計(jì)數(shù)法
//在進(jìn)行浮點(diǎn)數(shù)運(yùn)算的時(shí)候,可能會(huì)出現(xiàn)精度丟失的問(wèn)題
0.1 + 0.2 = 0.30000000000000004;
0.2 + 0.2 = 0.4;
//盡量少用浮點(diǎn)數(shù)進(jìn)行運(yùn)算播聪,不要讓浮點(diǎn)數(shù)進(jìn)行比較能犯。
解決辦法 : 根據(jù)小數(shù)點(diǎn)后面的位數(shù)量 乘以對(duì)應(yīng)的整數(shù);
0.1 + 0.2 ==> (0.1*10+0.2*10) / 10 = 0.3
0.01 + 0.02 呢?
字符串類型
字符串長(zhǎng)度:
var str = "dadasdafsfas";
console.log(str.length);
- 引號(hào)可以嵌套,但是只能相互嵌套,不能嵌套自己 (單雙號(hào)相互嵌套)
- 通過(guò)轉(zhuǎn)義符
轉(zhuǎn)義字符串:
字符串的拼接:
- +號(hào)具有字符串拼接的功能,他可以將兩個(gè)字符串拼接成一個(gè)字符串
- +號(hào)同時(shí)具有算術(shù)的功能犬耻,它能將兩個(gè)數(shù)字進(jìn)行相加
- +號(hào)兩邊有一個(gè)字符串踩晶,則是字符串拼接功能,如果兩個(gè)都是數(shù)字枕磁,則是算數(shù)功能
/ 第一種情況 : 字符串 + 字符串
var a = "hello";
var b = "itcast";
console.log(a + b);//字符串拼接功能
// 第二種情況 : 數(shù)值 + 數(shù)值
var a = 100;
var b = 100;
console.log(a + b);//加法
// 第三種情況 : 字符串 + 數(shù)值
var a = 'abc';
var b = 100;
console.log(a + b);//字符串拼接功能
布爾類型:true 和 false
//布爾類型只有兩個(gè)值
true:表示真
false:表示假
注意:
? 1. 區(qū)分大小寫渡蜻,不要寫成True或者是False了
? 2. 'true' 和 true , 前者是字符串類型
null 和 undefined
undefined表示一個(gè)沒(méi)有賦值的變量
null表示一個(gè)空的值, ( 例如 : 獲取一個(gè)元素,id寫錯(cuò)了,獲取不到,返回一個(gè)null)
字面量賦值 與 變量賦值
- 字面量賦值,字面量也叫直接量计济,一眼能夠識(shí)別是什么類型的變量茸苇,比如11, "abc", true, false, undefined, null等都是字面量,可以直接會(huì)使用沦寂。
- 變量賦值:瀏覽器必須要經(jīng)過(guò)聲明之后学密,才認(rèn)識(shí)變量,如果沒(méi)有聲明传藏,直接使用變量是會(huì)報(bào)錯(cuò)的腻暮。
操作符
-
算術(shù)運(yùn)算符
賦值運(yùn)算符
賦值運(yùn)算符有: = , +=, -=, *=, /=, %=
var num = 10;
num += 1; //num = num + 1;
num -= 1; //num = num - 1;
num *= 2; //num = num * 2;
num /= 2; //num = num / 2;
num % = 2; //num = num % 2;
一元運(yùn)算符
先自增:++i
后自增:i++
異同點(diǎn) :
1. 相同點(diǎn) : 代碼執(zhí)行之后, 數(shù)值都會(huì) + 1
2. 不同點(diǎn) : 就是在自增的時(shí)候使用就會(huì)出現(xiàn)不同
//先自增:
var num = 1;
console.log(++num); //先自增:表示先加1,后返回值
//后自增:
var num = 1;
console.log(num++);// 后自增:表示先返回值毯侦,后+1
自減運(yùn)算符:--
- 先自減:--i
- 后自減:i--
邏輯運(yùn)算符
- &&:與運(yùn)算符哭靖,表示且,只有當(dāng)兩個(gè)操作數(shù)都為true的時(shí)候侈离,結(jié)果才是true
- ||:或運(yùn)算符试幽,表示或,只要有其中一個(gè)操作數(shù)是true,結(jié)果就是true
- !:非運(yùn)算符卦碾,取反
console.log( true && true );
console.log( false && true );
console.log( true && false );
console.log( false && false );
console.log( true || true );
console.log( false || true );
console.log( true || false );
console.log( false || false );
console.log(!true);
console.log(!false);
總結(jié) :
&& 翻譯 : 一個(gè)為真,且,,另外一個(gè)也為真 => 才為真
1. 兩者都為true,才為true
2. 前者為true,,決定權(quán)在后者
|| 翻譯 : 一個(gè)為真,或者另外一個(gè)為真 => 真
1. 兩者有一個(gè)為true,結(jié)果就為true
2. 前者為false,,決定權(quán)在后者
比較運(yùn)算符
< >= <= == === != !==
var a = 5;
var b = 6;
console.log(a > b);//大于
console.log(a < b);//小于
console.log(a >= b);//大于等于
console.log(a <= b);//小于等于
console.log(a == b); //相等铺坞,只比較值起宽,不比較類型
console.log(a === b); //全等,比較類型和值
console.log(a != b); // 不等济榨, 只判斷值燎含,不判斷類型
console.log(a !== b); // 不全等 判斷值,且判斷類型
注意 :
數(shù)字類型比較和字符串比較是由區(qū)別的
1. 數(shù)字比較 : 24>3; 比較數(shù)字大小
2. 字符串比較 : '24' < '3' 比較首字母大小
3. 字符串和數(shù)字混合比較 : 比較數(shù)字內(nèi)容大小
運(yùn)算符優(yōu)先級(jí)
- ()優(yōu)先級(jí)最高
- 一元運(yùn)算符 ++/--/!
- 算數(shù)運(yùn)算符 (先*/%, 后+-)
- 比較運(yùn)算符 (> < >= <= )再(== === != !==)
-邏輯運(yùn)算符(先&&后||)
數(shù)據(jù)類型轉(zhuǎn)換
查看數(shù)據(jù)類型
var num = 11;
console.log(typeof num);
num = "abc";
console.log(typeof num);
轉(zhuǎn)換成 數(shù)值 -number
console.log(Number('55'));
Number()可以把任意值轉(zhuǎn)換成數(shù)值類型腿短,但是如果字符串中有不是數(shù)字的字符屏箍,返回NaN
- parseInt() 和 parseFloat()
- parseInt() 把整數(shù)或者小數(shù)都轉(zhuǎn)化為整數(shù);
- parseFloat() 把整數(shù)轉(zhuǎn)化整數(shù),把小數(shù)轉(zhuǎn)化為小數(shù)
var num1 = parseInt("12"); // 12
var num1 = parseInt("12.3"); //12
var num1 = parseFloat("12"); //12
var num1 = parseFloat("12.3");//12.3
var num1 = parseInt("12.3abc"); // 返回12,如果第一個(gè)字符是數(shù)字會(huì)解析知道遇到非數(shù)字結(jié)束
var num2 = parseInt("abc123"); // 返回NaN橘忱,如果第一個(gè)字符不是數(shù)字或者符號(hào)就返回NaN
轉(zhuǎn)換成 字符串類型 - string
String ( ) 因?yàn)閚ull 和undefined 沒(méi)有toString()方法 可以String可以用于null 和 undefined
var num = 5;
num = String(num);
console.log(num);
toString ( )
var num = 5;
console.log(num.toString());// 把數(shù)值5變成字符串5
//將來(lái)所有的數(shù)據(jù)都會(huì)有toString()方法赴魁,除了null和undefined
轉(zhuǎn)換成布爾類型 - boolean
- 其中 0, "", undefined,null钝诚, NaN颖御,這幾個(gè)值會(huì)轉(zhuǎn)換成false,其他值都會(huì)轉(zhuǎn)換成true
- 1 在布爾值中代表 true 0代表false
NaN
NaN: not a number, 表示一個(gè)非數(shù)字
在js中凝颇,NaN用來(lái)表示一個(gè)非數(shù)字的特殊值潘拱,當(dāng)發(fā)現(xiàn)無(wú)法進(jìn)行運(yùn)算時(shí),js不會(huì)報(bào)錯(cuò)拧略,而是會(huì)返回一個(gè)NaN
NaN的注意事項(xiàng):
- NaN的類型是number類型的芦岂,表示一個(gè)非數(shù)字
- NaN不等于任何值,包括NaN本身
- 通過(guò)isNaN()可以判斷是否是一個(gè)數(shù)字垫蛆,返回false的時(shí)候禽最,表示是一個(gè)數(shù)字。