(1)Num ber
<!DOCTYPE html>
+<html lang="en">
+<head>
+ <meta charset="UTF-8">
+ <title>Number</title>
+ <script type="text/javascript">
+ /*
+ 在JS中所有的數(shù)值都是Number類型,
+ 包括整數(shù)和浮點(diǎn)數(shù)(小數(shù))
+ JS中可以表示的數(shù)字的最大值
+ Number.MAX_VALUE
+ 1.7976931348623157e+308
+ Number.MIN_VALUE 大于0的最小值
+ 5e-324
+
+ 如果使用Number表示的數(shù)字超過(guò)了最大值,則會(huì)返回一個(gè)
+ Infinity 表示正無(wú)窮
+ -Infinity 表示負(fù)無(wú)窮
+ 使用typeof檢查Infinity也會(huì)返回number
+ NaN 是一個(gè)特殊的數(shù)字,表示Not A Number
+ 使用typeof檢查一個(gè)NaN也會(huì)返回number
+ */
+ //數(shù)字123
+ var a = 123;
+ //字符串123
+ var b = "123";
+
+ /*
+ 可以使用一個(gè)運(yùn)算符 typeof 來(lái)檢查一個(gè)變量的類型
+ 語(yǔ)法:typeof 變量
+ 檢查字符串時(shí),會(huì)返回string
+ 檢查數(shù)值時(shí),會(huì)返回number
+ */
+ // console.log(typeof a);
+
+ a = Number.MAX_VALUE * Number.MAX_VALUE;
+ a = Infinity;
+ a = "abc" * "bcd";
+ a = NaN;
+ // console.log(typeof a);
+
+ a = Number.MIN_VALUE;
+ // console.log(a);
+
+ /*在JS中整數(shù)的運(yùn)算基本可以保證精確*/
+ var c = 123456789 + 987654321;
+
+ /*
+ 如果使用JS進(jìn)行浮點(diǎn)運(yùn)算,可能得到一個(gè)不精確的結(jié)果
+ 所以千萬(wàn)不要使用JS進(jìn)行對(duì)精確度要求比較高的運(yùn)算
+ */
+ c = 0.1 + 0.2;
+ console.log(c);
+ </script>
+</head>
+<body>
+
+</body>
+</html>
(2)Boolean
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Boolean</title>
<script type="text/javascript">
/*
Boolean 布爾值
布爾值只有兩個(gè),主要用來(lái)做邏輯判斷
true
- 表示真
false
- 表示假
使用typeof檢查一個(gè)布爾值時(shí),會(huì)返回boolean
*/
var bool = false;
console.log(typeof bool);
console.log(bool);
</script>
</head>
<body>
</body>
</html>
(3)_Null和Undefined
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Null和Undefined</title>
<script type="text/javascript">
/*
Null(空值)類型的值只有一個(gè),就是null
null這個(gè)值專門用來(lái)表示一個(gè)為空的對(duì)象
使用typeof檢查一個(gè)null值時(shí),會(huì)返回object
Undefined(未定義)類型的值只有一個(gè),就undefind
當(dāng)聲明一個(gè)變量,但是并不給變量賦值時(shí),它的值就是undefined
使用typeof檢查一個(gè)undefined時(shí)也會(huì)返回undefined
*/
var a = null;
console.log(a);
console.log(typeof a);
var b;
b = undefined;
console.log(b);
console.log(typeof b);
</script>
</head>
<body>
</body>
</html>
(4)強(qiáng)制類型轉(zhuǎn)換
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>強(qiáng)制類型轉(zhuǎn)換</title>
<script type="text/javascript">
/*
強(qiáng)制類型轉(zhuǎn)換
- 指將一個(gè)數(shù)據(jù)類型強(qiáng)制轉(zhuǎn)換為其他的數(shù)據(jù)類型
- 類型轉(zhuǎn)換主要指,將其他的數(shù)據(jù)類型,轉(zhuǎn)換為
String Number Boolean
*/
/*
將其他的數(shù)據(jù)類型轉(zhuǎn)換為String
方式一:
- 調(diào)用被轉(zhuǎn)換數(shù)據(jù)類型的toString()方法
- 該方法不會(huì)影響到原變量,它會(huì)將轉(zhuǎn)換的結(jié)果返回
- 但是注意:null和undefined這兩個(gè)值沒(méi)有toString()方法,如果調(diào)用他們的方法,會(huì)報(bào)錯(cuò)
方式二:
- 調(diào)用String()函數(shù),并將被轉(zhuǎn)換的數(shù)據(jù)作為參數(shù)傳遞給函數(shù)
- 使用String()函數(shù)做強(qiáng)制類型轉(zhuǎn)換時(shí),
對(duì)于Number和Boolean實(shí)際上就是調(diào)用的toString()方法
但是對(duì)于null和undefined,就不會(huì)調(diào)用toString()方法
它會(huì)將 null 直接轉(zhuǎn)換為 "null"
將 undefined 直接轉(zhuǎn)換為 "undefined"
*/
var a = 123;
//調(diào)用a的toString()方法
//調(diào)用xxx的yyy()方法,就是xxx.yyy()
a = a.toString();
a = true;
a = a.toString();
a = null;
//a = a.toString(); //報(bào)錯(cuò)
a = undefined;
//a = a.toString(); //報(bào)錯(cuò)
a = 123;
//調(diào)用String()函數(shù),來(lái)將a轉(zhuǎn)換為字符串
a = String(a);
a = null;
a = String(a);
a = undefined;
a = String(a);
console.log(typeof a);
console.log(a);
</script>
</head>
<body>
</body>
</html>
(5)轉(zhuǎn)換為Number
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>轉(zhuǎn)換為Number</title>
<script type="text/javascript">
/*
將其他的數(shù)據(jù)類型轉(zhuǎn)換為Number
轉(zhuǎn)換方式一:
使用Number()函數(shù)
- 字符串 --> 數(shù)字
1.如果是純數(shù)字的字符串,則直接將其轉(zhuǎn)換為數(shù)字
2.如果字符串中有非數(shù)字的內(nèi)容,則轉(zhuǎn)換為NaN
3.如果字符串是一個(gè)空串或者是一個(gè)全是空格的字符串,則轉(zhuǎn)換為0
- 布爾 --> 數(shù)字
true 轉(zhuǎn)成 1
false 轉(zhuǎn)成 0
- null --> 數(shù)字 0
- undefined --> 數(shù)字 NaN
轉(zhuǎn)換方式二:
- 這種方式專門用來(lái)對(duì)付字符串
- parseInt() 把一個(gè)字符串轉(zhuǎn)換為一個(gè)整數(shù)
- parseFloat() 把一個(gè)字符串轉(zhuǎn)換為一個(gè)浮點(diǎn)數(shù)
*/
var a = "123";
//調(diào)用Number()函數(shù)來(lái)將a轉(zhuǎn)換為Number類型
a = Number(a);
a = "789abc";
a = Number(a);
a = "";
a = Number(a);
a = " ";
a = Number(a);
a = true;
a = Number(a);
a = false;
a = Number(a);
a = null;
a = Number(a);
a = undefined;
a = Number(a);
a = "123.567a456px";
//調(diào)用parseInt()函數(shù)將a轉(zhuǎn)換為Number
//parseInt()可以將一個(gè)字符串中的有效的整數(shù)內(nèi)容去出來(lái),然后轉(zhuǎn)換為Number
a = parseInt(a);
// parseFloat()作用和parseInt()類似,不同的是它可以獲得有效的小數(shù)
a = "123.456.789px";
a = parseFloat(a);
//如果對(duì)非String使用parseInt()或parseFloat(),它會(huì)先將其轉(zhuǎn)換為String然后在操作
a = true;
a = parseInt(a);
a = 198.23;
a = parseInt(a);
console.log(typeof a);
console.log(a);
</script>
</head>
<body>
</body>
</html>
(6)其他進(jìn)制的數(shù)字
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>其他進(jìn)制的數(shù)字</title>
<script type="text/javascript">
var a = 123;
/*
在js中,如果需要表示16進(jìn)制的數(shù)字,則需要以0x開(kāi)頭
如果需要表示8進(jìn)制的數(shù)字,則需要以0開(kāi)頭
如果要要表示2進(jìn)制的數(shù)字,則需要以0b開(kāi)頭,但是不是所有的瀏覽器都支持
*/
//十六進(jìn)制
a = 0x10;
a = 0xff;
a = 0xCafe;
//八進(jìn)制數(shù)字
a = 070;
//二進(jìn)制數(shù)字
//a = 0b10;
//像"070"這種字符串,有些瀏覽器會(huì)當(dāng)成8進(jìn)制解析,有些會(huì)當(dāng)成10進(jìn)制解析
a = "070";
// a = parseInt(a);
//可以在parseInt()中傳遞一個(gè)第二個(gè)參數(shù),來(lái)指定數(shù)字的進(jìn)制
a = parseInt(a,10);
console.log(typeof a);
console.log(a);
</script>
</head>
<body>
</body>
</html>
(7)轉(zhuǎn)換為Boolean
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>轉(zhuǎn)換為Boolean</title>
<script type="text/javascript">
/*
將其他的數(shù)據(jù)類型轉(zhuǎn)換為Boolean
使用Boolean()函數(shù)
- 數(shù)字 ---> 布爾
- 除了0和NaN,其余的都是true
- 字符串 ---> 布爾
- 除了空串,其余的都是true
- null和undefined都會(huì)轉(zhuǎn)換為false
- 對(duì)象也會(huì)轉(zhuǎn)換為true
*/
var a = 123; //true
a = -123; //true
a = 0; //false
a = Infinity; //true
a = NaN; //false
//調(diào)用Boolean()函數(shù)來(lái)將a轉(zhuǎn)換為布爾值
a = Boolean(a);
a = "hello";//true
a = "true";//true
a = "false";//true
a = "錯(cuò)誤";//true
a = " ";//true
a = "";//false
a = Boolean(a);
a = null; //false
a = Boolean(a);
a = undefined; //false
a = Boolean(a);
a = window; //true
a = Boolean(a);
console.log(typeof a);
console.log(a);
</script>
</head>
<body>
</body>
</html>
(8)運(yùn)算符
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>運(yùn)算符</title>
<script type="text/javascript">
/*
運(yùn)算符也叫操作符
通過(guò)運(yùn)算符可以對(duì)一個(gè)或多個(gè)值進(jìn)行運(yùn)算,并獲取運(yùn)算結(jié)果
比如:typeof就是運(yùn)算符,可以來(lái)獲得一個(gè)值的類型,它會(huì)將該值的類型以字符串的形式返回
"number" "string" "boolean" "undefined" "object"
算數(shù)運(yùn)算符
當(dāng)對(duì)非Number類型的值進(jìn)行運(yùn)算時(shí),會(huì)將這些值轉(zhuǎn)換為Number然后在運(yùn)算
任何值和NaN做運(yùn)算都得NaN
+
+可以對(duì)兩個(gè)值進(jìn)行加法運(yùn)算,并將結(jié)果返回
如果對(duì)兩個(gè)字符串進(jìn)行加法運(yùn)算,則會(huì)做拼串,會(huì)將兩個(gè)字符串拼接為一個(gè)字符串,并返回
任何的值和字符串做加法運(yùn)算,都會(huì)先轉(zhuǎn)換為字符串,然后再和字符串做拼串的操作
-
- 可以對(duì)兩個(gè)值進(jìn)行減法運(yùn)算,并將結(jié)果返回
*
* 可以對(duì)兩個(gè)值進(jìn)行乘法運(yùn)算
/
/ 可以對(duì)兩個(gè)值進(jìn)行除法運(yùn)算
%
% 取模運(yùn)算(取余數(shù))
*/
var a = 123;
var result = typeof a;
// console.log(result);
// console.log(typeof a);
result = a + 1;
result = 456 + 789;
result = true + 1;
result = true + false;
result = 2 + null;
result = 2 + NaN;
result = "123" + "456";
result = "你好" + "小帥哥";
// console.log(result);
var str = "鋤禾日當(dāng)午,汗滴禾下土,誰(shuí)知盤中餐,粒粒皆辛苦";
// console.log(str);
result = 123 + "1";
result = true + "hello";
// console.log(result);
//任何值和字符串相加都會(huì)轉(zhuǎn)換為字符串,并做拼串操作
/*
我們可以利用這一特點(diǎn),來(lái)將一個(gè)任意的數(shù)據(jù)類型轉(zhuǎn)換為String
我們只需要為任意的數(shù)據(jù)類型 + 一個(gè) "" 即可將其轉(zhuǎn)換為String
這是一種隱式的類型轉(zhuǎn)換,由瀏覽器自動(dòng)完成,實(shí)際上它也是調(diào)用String()函數(shù)
*/
var c = 123;
c = String(c);
c = null;
c = c + "";
// console.log(typeof c);
// console.log(c);
c = 123;
// console.log("c = " + c);
result = 1 + 2 + "3";//33
result = "1" + 2 + 3; //123
result = 100 - 5;//95
result = 100 - true;//99
result = 100 - "1";//99
result = 2 * 2;//4
result = 2 * "8";
result = 2 * undefined;//NaN
result = 2 * null;//0
result = 4 / 2;//2
result = 3 / 2;//1.5
// console.log("result = "+result);
/*
任何值做- * /運(yùn)算時(shí)都會(huì)自動(dòng)轉(zhuǎn)換為Number
我們可以利用這一特點(diǎn)做隱式的類型轉(zhuǎn)換
可以通過(guò)為一個(gè)值 -0 *1 /1來(lái)將其轉(zhuǎn)換為Number
原理和Number()函數(shù)一樣,使用起來(lái)更加簡(jiǎn)單
*/
var d = "123";
d = d - 0;
// console.log(typeof d);
// console.log(d);
result = 9 % 3;//0
result = 9 % 4;//1
result = 9 % 5;//4
console.log("result = "+result);
</script>
</head>
<body>
</body>
</html>
(9)一元運(yùn)算符
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>一元運(yùn)算符</title>
<script type="text/javascript">
/*
一元運(yùn)算符,只需要一個(gè)操作數(shù)
+ 正號(hào)
- 正號(hào)不會(huì)對(duì)數(shù)字產(chǎn)生任何影響
- 負(fù)號(hào)
- 負(fù)號(hào)可以對(duì)數(shù)字進(jìn)行符號(hào)的取反
- 對(duì)于非Number類型的值,它會(huì)將先轉(zhuǎn)換為Number,然后再運(yùn)算
- 可以對(duì)一個(gè)其他的數(shù)據(jù)類型使用+,來(lái)將其轉(zhuǎn)換為number,它的原理和Number()函數(shù)一樣
*/
var a = 123;
a = +a;
a = -a;
a = true;
a = -a;
a = "18";
a = +a;
/*console.log("a = " + a);
console.log(typeof a);*/
var result = 1 + +"2" + 3;
console.log("result = "+result);
</script>
</head>
<body>
</body>
</html>
(10)<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>自增和自減</title>
<script type="text/javascript">
/*
自增 ++
- 通過(guò)自增可以使變量在自身的基礎(chǔ)上增加1
- 對(duì)于一個(gè)變量自增以后,原變量的值會(huì)立即自增1
- 自增分成兩種:后++(a++) 和 前++(++a)
無(wú)論是a++還是++a,都會(huì)立即使原變量的值自增1
不同的是a++和++a的值不同
a++的值等于原變量的值(自增前的值)
++a的值等于新值 (自增后的值)
自減 --
- 通過(guò)自減可以使變量在自身的基礎(chǔ)上減1
- 自減分成兩種:后--(a--) 和 前--(--a)
無(wú)論是a--還是--a都會(huì)立即使原變量的值自減1
不同的是a-- 和 --a的值不同
a-- 是變量的原值 (自減前的值)
--a 是變量的新值 (自減以后的值)
*/
var a = 1;
//使a自增1
//a++;
//++a;
//console.log("++a = " + ++a);
//console.log("a++ = " + a++);
//console.log("a = " + a);
var c = 10;
//第一次c++,是在10的基礎(chǔ)上自增
c++;
//第二次c++,是在11的基礎(chǔ)上自增
//console.log(c++);
var d = 20;
//console.log(++d);//21
//console.log(++d);//22
//20 + 22 + 22
var result = d++ + ++d + d ;
console.log("result = " + result);
</script>
</head>
<body>
</body>
</html>