JavaScriptjavascript
誕生於1995年,它的出現主要是用於處理網頁中的 前端驗證。 • 所謂的前端驗證,就是指檢查用戶輸入的內容是否符合必定的 規則。 • 好比:用戶名的長度,密碼的長度,郵箱的格式等。html
JavaScript是由網景公司發明,起初命名爲LiveScript,後來由 於SUN公司的介入改名爲了JavaScript。1996年微軟公司在其最新的IE3瀏覽器中引入了本身對 JavaScript的實現JScript。因而在市面上存在兩個版本的JavaScript,一個網景公司的 JavaScript和微軟的JScript。 • 爲了確保不一樣的瀏覽器上運行的JavaScript標準一致,因此幾 個公司共同定製了JS的標準名命名爲ECMAScript。前端
JavaScript實現java
咱們已經知道ECMAScript是JavaScript標準,因此通常狀況下 這兩個詞咱們認爲是一個意思。 • 可是實際上JavaScript的含義卻要更大一些。 • 一個完整的JavaScript實現應該由如下三個部分構成:c++
編寫第一個javescript頁面瀏覽器
alert("");緩存
控制瀏覽器彈出一個警告框,括號中填警告框中內容。函數
document.write("")學習
能夠向body中輸出一個內容,讓計算機在頁面中輸出一個內容。括號中填輸出內容。編碼
console.log("")
向控制檯輸出一個內容。括號中填輸出內容。
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title></title> <!--JS代碼須要編寫到script標籤中--> <script type="text/javascript"> alert("哥,你真帥啊!!"); document.write("看我出不出來~~~"); console.log("你猜我在哪出來呢?"); </script> </head> <body> </body> </html>
須要注意的是:js語言的執行順序是從上到下,因此輸出順序從上到下依次輸出。
效果:
控制檯中:
編寫位置
咱們目前學習的JS全都是客戶端的JS,也就是說全都是須要在 瀏覽器中運行的,因此咱們咱們的JS代碼全都須要在網頁中編 寫。
• 咱們的JS代碼須要編寫到<script>標籤中。
• 咱們通常將script標籤寫到head中。(和style標籤有點像)
• 屬性: – type:默認值text/javascript能夠不寫,不寫也是這個值。
– src:當須要引入一個外部的js文件時,使用該屬性指向文件的地址
編寫位置一:能夠將js代碼寫在超連接的href屬性中,這樣當點擊超連接時,會執行js代碼
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title></title> </head> <body> <button onclick="alert('討厭,你點我幹嗎~~');">點我一下</button> <a href="javascript:alert('讓你點你就點!!');">你也點我一下</a> <a href="javascript:;">你也點我一下</a> </body> </html>
編寫位置二:能夠將js代碼編寫到script標籤。或者在script標籤引入外部編寫的js文件,外部的js文件能夠在不一樣的頁面中同時引用,也能夠利用到瀏覽器的緩存機制。(推薦使用的方式)
script標籤一旦用於引入外部文件了,就不能在編寫代碼了,即便編寫了瀏覽器也會忽略。若是須要則能夠在建立一個新的script標籤用於編寫內部代碼。
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title></title> <script type="text/javascript" src="js/script.js"></script> <script type="text/javascript"> alert("我是內部的JS代碼"); </script> </head> <body> </body> </html>
JavaScript基本語法
1.JS中嚴格區分大小寫
2.JS中每一條語句以分號(;)結尾
- 若是不寫分號,瀏覽器會自動添加,可是會消耗一些系統資源,並且有些時候,瀏覽器會加錯分號,因此在開發中分號必須寫。
3.JS中會忽略多個空格和換行,因此咱們能夠利用空格和換行對代碼進行格式化
4.單行註釋和多行註釋
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title></title> <script type="text/javascript"> /* 多行註釋 JS註釋 多行註釋,註釋中的內容不會被執行,可是能夠在源代碼中查看 要養成良好的編寫註釋的習慣,也能夠經過註釋來對代碼進行一些簡單的調試 */ //單行註釋 //alert("hello"); //document.write("hello"); console.log("hello"); //該語句用來在控制檯輸出一個日誌 alert("hello"); </script> </head> <body </body> </html>
字面量和變量
字面量:都是一些不可改變的值
好比 :1 2 3 4 5
字面量都是能夠直接使用,可是咱們通常都不會直接使用字面量
變量:變量能夠用來保存字面量,並且變量的值是能夠任意改變的
變量更加方便咱們使用,因此在開發中都是經過變量去保存一個字面量,而不多直接使用字面量,能夠經過變量對字面量進行描述。
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title></title> <script type="text/javascript"> //聲明變量 //在js中使用var關鍵字來聲明一個變量 var a; //爲變量賦值 a = 123; a = 456; a = 123124223423424; //聲明和賦值同時進行 var b = 789; var c = 0; var age = 80; console.log(age); </script> </head> <body> </body> </html>
標識符
在JS中全部的能夠由咱們自主命名的均可以稱爲是標識符,例如:變量名、函數名、屬性名都屬於標識符。
命名一個標識符時須要遵照以下的規則:
1.標識符中能夠含有字母、數字、_、$
2.標識符不能以數字開頭
3.標識符不能是ES中的關鍵字或保留字
4.標識符通常都採用駝峯命名法
- 首字母小寫,每一個單詞的開頭字母大寫,其他字母小寫。例如: helloWorld xxxYyyZzz
JS底層保存標識符時其實是採用的Unicode編碼,
*因此理論上講,全部的utf-8中含有的內容均可以做爲標識符
數據類型
在JS中一共有六種數據類型:
String 字符串
Number 數值
Boolean 布爾值
Null 空值
Undefined 未定義
Object 對象
其中String Number Boolean Null Undefined屬於基本數據類型
* 而Object屬於引用數據類型
String 字符串
在JS中字符串須要使用引號引發來,使用雙引號或單引號均可以,可是不要混着用。 引號不能嵌套,雙引號不能放雙引號,單引號不能放單引號。
在字符串中咱們可使用\做爲轉義字符,當表示一些特殊符號時可使用\進行轉義
\" 表示 "
\' 表示 '
\n 表示換行
\t 製表符
\\ 表示\
<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title></title> <script type="text/javascript"> var str = 'hello'; str = '我說:"今每天氣真不錯!"'; str = "我說:\"今天\t天氣真不錯!\""; str = "\\\\\\"; //輸出字面量 字符串str alert("str"); //輸出變量str alert(str); </script> </head> <body> </body> </html>
Number類型
在JS中全部的數值都是Number類型,包括整數和浮點數(小數)
JS中能夠表示的數字的最大值
Number.MAX_VALUE
1.7976931348623157e+308
Number.MIN_VALUE(大於0的最小值)
5e-324
若是使用Number表示的數字超過了最大值,則會返回一個
Infinity 表示正無窮
Infinity 表示負無窮
使用typeof檢查Infinity也會返回number
NaN 是一個特殊的數字,表示Not A Number
使用typeof檢查一個NaN也會返回number
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title></title> <script type="text/javascript"> //數字123 var a = 123; //字符串123 var b = "123"; a = -Number.MAX_VALUE * Number.MAX_VALUE; //返回的結果是infinity a = "abc" * "bcd"; console.log(typeof a); //返回的結果是a = NaN; console.log(typeof infinity); //返回的結果是number console.log(typeof NaN); //返回的結果是number /* * 在JS中整數的運算基本能夠保證精確 */ var c = 1865789 + 7654321; /* * 若是使用JS進行浮點運算,可能獲得一個不精確的結果 * 因此千萬不要使用JS進行對精確度要求比較高的運算 */ var c = 0.1 + 0.2; console.log(c); </script> </head> <body> </body> </html>
Boolean類型
布爾值只有兩個,主要用來作邏輯判斷:
true
- 表示真
false
- 表示假
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title></title> <script type="text/javascript"> var bool = false; /* 使用typeof檢查一個布爾值時,會返回boolean */ console.log(typeof bool); console.log(bool); </script> </head> <body> </body> </html>
Null和Undefined
Null(空值)類型的值只有一個,就是null。null這個值專門用來表示一個爲空的對象。使用typeof檢查一個null值時,會返回object
ndefined(未定義)類型的值只有一個,就undefind。當聲明一個變量,可是並不給變量賦值時,它的值就是undefined。使用typeof檢查一個undefined時也會返回undefined。
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title></title> <script type="text/javascript"> var a = null; var b = undefined; console.log(typeof b); </script> </head> <body> </body> </html>
強制類型轉換
轉換string類型
強制類型轉換,指將一個數據類型強制轉換爲其餘的數據類型。類型轉換主要指,將其餘的數據類型,轉換爲String Number Boolean。
方式一:將其餘的數據類型轉換爲String
調用被轉換數據類型的toString()方法,該方法不會影響到原變量,它會將轉換的結果返回。可是注意:null和undefined這兩個值沒有toString()方法,若是調用他們的方法,會報錯。
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title></title> <script type="text/javascript"> var a = 123; //調用a的toString()方法 //調用xxx的yyy()方法,就是xxx.yyy() a = a.toString(); a = true; a = a.toString(); a = null; //a = a.toString(); //報錯 a = undefined; //a = a.toString(); //報錯 </script> </head> <body> </body> </html>
方式二:調用String()函數,並將被轉換的數據做爲參數傳遞給函數
使用String()函數作強制類型轉換時,對於Number和Boolean實際上就是調用的toString()方法。可是對於null和undefined,就不會調用toString()方法,它會將 null 直接轉換爲 "null",將 undefined 直接轉換爲 "undefined"
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title></title> <script type="text/javascript"> a = 123; //調用String()函數,來將a轉換爲字符串 a = String(a); a = null; a = String(a); a = undefined; a = String(a); </script> </head> <body> </body> </html>
轉換爲number
轉換方式一:
使用Number()函數
字符串 --> 數字
1.若是是純數字的字符串,則直接將其轉換爲數字
2.若是字符串中有非數字的內容,則轉換爲NaN
3.若是字符串是一個空串或者是一個全是空格的字符串,則轉換爲0
布爾 --> 數字
true 轉成 1
false 轉成 0
null --> 數字 0
undefined --> 數字 NaN
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title></title> <script type="text/javascript"> var a = "123"; //調用Number()函數來將a轉換爲Number類型 a = Number(a); a = false; a = Number(a); a = null; a = Number(a); a = undefined; a = Number(a); </script> </head> <body> </body> </html>
轉換方式二:
這種方式專門用來對付字符串
parseInt() 把一個字符串轉換爲一個整數
parseFloat() 把一個字符串轉換爲一個浮點數
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title></title> <script type="text/javascript"> a = "123567a567px"; //調用parseInt()函數將a轉換爲Number /* * parseInt()能夠將一個字符串中的有效的整數內容去出來, * 而後轉換爲Number */ a = parseInt(a); /* * parseFloat()做用和parseInt()相似,不一樣的是它能夠得到有效的小數 */ a = "123.456.789px"; a = parseFloat(a); /* * 若是對非String使用parseInt()或parseFloat() * 它會先將其轉換爲String而後在操做 */ a = true; a = parseInt(a); a = 198.23; a = parseInt(a); console.log(typeof a); console.log(a); </script> </head> <body> </body> </html>
其餘的進制數字
在js中,若是須要表示16進制的數字,則須要以0x開頭。若是須要表示8進制的數字,則須要以0開頭。若是要要表示2進制的數字,則須要以0b開頭。可是不是全部的瀏覽器都支持。
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title></title> <script type="text/javascript"> var a = 123; //十六進制 a = 0x10; a = 0xff; a = 0xCafe; //八進制數字 a = 070; //二進制數字 //a = 0b10; //像"070"這種字符串,有些瀏覽器會當成8進制解析,有些會當成10進制解析 a = "070"; //能夠在parseInt()中傳遞一個第二個參數,來指定數字的進制 a = parseInt(a,10); console.log(typeof a); console.log(a); </script> </head> <body> </body> </html>
轉換進制方法二:
<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title></title> <script type="text/javascript"> //對於Number調用toString()時能夠在方法中傳遞一個整數做爲參數 //此時它將會把數字轉換爲指定的進制,若是不指定則默認轉換爲10進制 var a = 255; a = a.toString(2); console.log(a); console.log(typeof a); </script> </head> <body> </body> </html>
轉換爲boolean
將其餘的數據類型轉換爲Boolean
使用Boolean()函數
數字 ---> 布爾
除了0和NaN,其他的都是true
字符串 ---> 布爾
除了空串,其他的都是true
null和undefined都會轉換爲false
對象也會轉換爲true
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title></title> <script type="text/javascript"> var a = 123; //true a = -123; //true a = 0; //false a = Infinity; //true a = NaN; //false //調用Boolean()函數來將a轉換爲布爾值 a = Boolean(a); a = " "; a = Boolean(a); a = null; //false a = Boolean(a); a = undefined; //false a = Boolean(a); console.log(typeof a); console.log(a); </script> </head> <body> </body> </html>
算術運算符
+
能夠對兩個值進行加法運算,並將結果返回
若是對兩個字符串進行加法運算,則會作拼串
會將兩個字符串拼接爲一個字符串,並返回
任何的值和字符串作加法運算,都會先轉換爲字符串,而後再和字符串作拼串的操做
-
能夠對兩個值進行減法運算,並將結果返回
*
能夠對兩個值進行乘法運算
/
能夠對兩個值進行除法運算
%
取模運算(取餘數)
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title></title> <script type="text/javascript"> result = 456 + 789; //ture轉換成1 result = true + 1; //ture轉換成1,false轉換成0 result = true + false; //null轉換爲0 result = 2 + null; //任何數和null作運算都是null result = 2 + NaN; //拼串 result = "你好" + "大帥哥"; //拼串 var str = "鋤禾日當午," + "汗滴禾下土," + "誰知盤中餐," + "粒粒皆辛苦"; //與字符串相加時,先轉換成字符串,再拼串 result = 123 + "1"; //與字符串相加時,先轉換成字符串,再拼串 result = true + "hello";
</script> </head> <body> </body> </html>
特別地,咱們能夠利用拼串操做,來將一個任意的數據類型轉換爲String。
咱們只須要爲任意的數據類型 + 一個 "" 便可將其轉換爲String。這是一種隱式的類型轉換,由瀏覽器自動完成,實際上它也是調用String()函數。
一樣地,任何值作- * /運算時都會自動轉換爲Number。
咱們能夠利用這一特色作隱式的類型轉換能夠經過爲一個值 -0 *1 /1來將其轉換爲Number。 原理和Number()函數同樣,使用起來更加簡單。
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title></title> <script type="text/javascript"> var c = 123; c = c + ""; c = null; c = c + ""; result = 1 + 2 + "3"; //33 result = "1" + 2 + 3; //123 result = 100 - 5; result = 100 - true; result = 100 - "1"; result = 2 * 2; result = 2 * "8"; result = 2 * undefined; result = 2 * null; result = 4 / 2; result = 3 / 2; //轉換number類型最簡單方法 var d = "123"; d = d - 0; </script> </head> <body> </body> </html>
一元運算符
+正號
正號不會對數字產生任何影響
- 負號
負號能夠對數字進行負號的取反
對於非Number類型的值,
它會將先轉換爲Number,而後在運算
能夠對一個其餘的數據類型使用+,來將其轉換爲number
它的原理和Number()函數同樣
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title></title> <script type="text/javascript"> var a = 123; a = -a; a = true; a = "18"; a = +a; var result = 1 + +"2" + 3;//6 console.log("result = "+result); </script> </head> <body> </body> </html>
自增 ++
經過自增可使變量在自身的基礎上增長1
對於一個變量自增之後,原變量的值會當即自增1
自增分紅兩種:後++(a++) 和 前++(++a)
不管是a++ 仍是 ++a,都會當即使原變量的值自增1
不一樣的是a++ 和 ++a的值不一樣
a++的值等於原變量的值(自增前的值)
++a的值等於新值 (自增後的值)
自減 --
經過自減可使變量在自身的基礎上減1
自減分紅兩種:後--(a--) 和 前--(--a)
不管是a-- 仍是 --a 都會當即使原變量的值自減1
不一樣的是a-- 和 --a的值不一樣
a-- 是變量的原值 (自減前的值)
--a 是變量的新值 (自減之後的值)
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title></title> <script type="text/javascript"> var a = 1; //結果都是2,可是a++的值爲1,++a值爲2. a++; ++a; var c = 10; //第一次c++,是在10的基礎上自增 c++; //第二次c++,是在11的基礎上自增 console.log(c++); var d = 20; console.log(++d);//21 console.log(++d);//22 //20 + 22 + 22 var result = d++ + ++d + d ; //console.log("d = "+d); </script> </head> <body> </body> </html>
小練習:
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title></title> <script type="text/javascript"> var n1=10; var n2=20; var n = n1++; //n1 = 11 n1++ = 10 console.log('n='+n); // 10 console.log('n1='+n1); //11 n = ++n1 //n1 = 12 ++n1 =12 console.log('n='+n); //12 console.log('n1='+n1); //12 n = n2--;// n2=19 n2--=20 console.log('n='+n); //20 console.log('n2='+n2); //19 n = --n2; //n2=18 --n2 = 18 console.log('n='+n); //18 console.log('n2='+n2); //18 </script> </head> <body> </body> </html>
邏輯運算符
JS中爲咱們提供了三種邏輯運算符
! 非
* - !能夠用來對一個值進行非運算
* - 所謂非運算就是值對一個布爾值進行取反操做,
* true變false,false變true
* - 若是對一個值進行兩次取反,它不會變化
* - 若是對非布爾值進行元素,則會將其轉換爲布爾值,而後再取反
* 因此咱們能夠利用該特色,來將一個其餘的數據類型轉換爲布爾值
* 能夠爲一個任意數據類型取兩次反,來將其轉換爲布爾值,
* 原理和Boolean()函數同樣
*
&& 與
* - &&能夠對符號兩側的值進行與運算並返回結果
* - 運算規則
* - 兩個值中只要有一個值爲false就返回false,
* 只有兩個值都爲true時,纔會返回true
* - JS中的「與」屬於短路的與,
* 若是第一個值爲false,則不會看第二個值
*
|| 或
* - ||能夠對符號兩側的值進行或運算並返回結果
* - 運算規則:
* - 兩個值中只要有一個true,就返回true
* 若是兩個值都爲false,才返回false
* - JS中的「或」屬於短路的或
* 若是第一個值爲true,則不會檢查第二個值
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title></title> <script type="text/javascript"> var a = false; //對a進行非運算 a = !a; console.log("a = "+a); var b = 10; //取兩次反仍是自己 b = !!b; //若是兩個值都是true則返回true var result = true && true; //只要有一個false,就返回false result = true && false; result = false && true; result = false && false; //若是兩個值都是true則返回true var result = true && true; //第一個值爲true,會檢查第二個值 //true && alert("看我出不出來!!"); //第一個值爲false,不會檢查第二個值 //false && alert("看我出不出來!!"); //只有有一個true,就返回true result = true || false; result = false || true ; result = true || true ; </script> </head> <body> </body>
</html>
非布爾值的與或運算
&& || 非布爾值的狀況
對於非布爾值進行與或運算時,
會先將其轉換爲布爾值,而後再運算,而且返回原值
與運算:
若是第一個值爲true,則必然返回第二個值
若是第一個值爲false,則直接返回第一個值
或運算:
若是第一個值爲true,則直接返回第一個值
若是第一個值爲false,則返回第二個值
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title></title> <script type="text/javascript"> //true && true //與運算:若是兩個值都爲true,則返回後邊的 var result = 5 && 6; //與運算:若是兩個值中有false,則返回靠前的false //false && true result = 0 && 2; result = 2 && 0; //false && false result = NaN && 0; result = 0 && NaN; //true || true //若是第一個值爲true,則直接返回第一個值 result = 2 || 1; result = 2 || NaN; result = 2 || 0; //若是第一個值爲false,則直接返回第二個值 result = NaN || 1; result = NaN || 0; result = "" || "hello"; result = -1 || "你好"; console.log("result = "+result); </script> </head> <body> </body> </html>
賦值運算符
a=5,中=就是賦值運算符。
a += 5 等價於 a = a + 5
-=
a -= 5 等價於 a = a - 5
*=
a *= 5 等價於 a = a * 5
/=
a /= 5 等價於 a = a / 5
%=
a %= 5 等價於 a = a % 5
關係運算符
經過關係運算符能夠比較兩個值之間的大小關係,* 若是關係成立它會返回true,若是關係不成立則返回false
> 大於號
判斷符號左側的值是否大於右側的值
若是關係成立,返回true,若是關係不成立則返回false
>= 大於等於
判斷符號左側的值是否大於或等於右側的值
< 小於號
判斷符號左側的值是否小於右側的值
<= 小於等於
判斷符號左側的值是否小於或等於右側的值
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title></title> <script type="text/javascript"> var result = 5 > 10;//false result = 5 > 4; //true result = 5 > 5; //false result = 5 >= 5; //true result = 5 >= 4; //true result = 5 < 4; //false result = 4 <= 4; //true console.log(1 > true); //false console.log(1 >= true); //true console.log(1 > "0"); //true console.log(10 > null); //true 任何值和NaN作任何比較都是false console.log(10 <= "hello"); //false console.log(true > false); //true console.log("1" < "5"); //true console.log("11" < "5"); //true //比較兩個字符串時,比較的是字符串的字符編碼 console.log("1" < "5"); //true console.log("11" < "5"); //true //比較兩個字符串時,比較的是字符串的字符編碼 console.log("a" < "b");//true //比較字符編碼時是一位一位進行比較 //若是兩位同樣,則比較下一位,因此借用它來對英文進行排序 console.log("abc" < "bcd");//true //比較中文時沒有意義 console.log("戒" > "我"); //true //若是比較的兩個字符串型的數字,可能會獲得不可預期的結果 //注意:在比較兩個字符串型的數字時,必定必定必定要轉型 console.log("11123123123123123123" < +"5"); //true </script> </head> <body> </body> </html>
unicode編碼表
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title></title> <script type="text/javascript"> /* * 在字符串中使用轉義字符輸入Unicode編碼 * \u四位編碼 */ console.log("\u2620"); </script> </head> <body> <!--在網頁中使用Unicode編碼 &#編碼; 這裏的編碼須要的是10進制 --> <h1 style="font-size: 200px;">☠</h1> <h1 style="font-size: 200px;">⚀</h1> </body> </html>
相等運算符
相等運算符用來比較兩個值是否相等,若是相等會返回true,不然返回false。
==
相等
當使用==來比較兩個值時,若是值的類型不一樣,則會自動進行類型轉換,將其轉換爲相同的類型而後在比較。
!=
不相等
不相等也會對變量進行自動的類型轉換,若是轉換後相等它也會返回false
===
全等
用來判斷兩個值是否全等,它和相等相似,不一樣的是它不會作自動的類型轉換。 若是兩個值的類型不一樣,直接返回false。
!==
不全等
用來判斷兩個值是否不全等,和不等相似,不一樣的是它不會作自動的類型轉換。若是兩個值的類型不一樣,直接返回true。
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title></title> <script type="text/javascript"> console.log(1 == 1); //true var a = 10; console.log(a == 4); //false console.log("1" == 1); //true console.log(true == "1"); //true console.log(null == 0); //false /* * undefined 衍生自 null * 因此這兩個值作相等判斷時,會返回true */ console.log(undefined == null); /* * NaN不和任何值相等,包括他自己 */ console.log(NaN == NaN); //false //判斷b的值是不是NaN //console.log(b == NaN);//不能用此方法 /* * 能夠經過isNaN()函數來判斷一個值是不是NaN * 若是該值是NaN則返回true,不然返回false */ console.log(isNaN(b)); console.log(10 != 5); //true console.log(10 != 10); //false console.log("abcd" != "abcd"); //false console.log("1" != 1);//false console.log("123" === 123);//false console.log(null === undefined);//false console.log(1 !== "1"); //true </script> </head> <body> </body> </html>
條件運算符(三元運算符)
語法:
*條件表達式?語句1:語句2;
執行的流程:
條件運算符在執行時,首先對條件表達式進行求值,
若是該值爲true,則執行語句1,並返回執行結果
若是該值爲false,則執行語句2,並返回執行結果
若是條件的表達式的求值結果是一個非布爾值,
會將其轉換爲布爾值而後在運算
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title></title> <script type="text/javascript"> var a = 300; var b = 143; var c = 50; a > b ? alert("a大"):alert("b大"); //獲取a和b中的最大值 var max = a > b ? a : b; //獲取a b c 中的大值 max = max > c ? max : c; //這種寫法不推薦使用,不方便閱讀 var max = a > b ? (a > c ? a :c) : (b > c ? b : c); //非布爾值 console.log("max = "+max); "hello"?alert("語句1"):alert("語句2"); </script> </head> <body> </body> </html>
運算符的優先級
就和數學中同樣,在JS中運算符也有優先級, 好比:先乘除 後加減
在JS中有一個運算符優先級的表,在表中越靠上優先級越高,優先級越高越優先計算,若是優先級同樣,則從左往右計算。可是這個表咱們並不須要記憶,若是遇到優先級不清楚可使用()來改變優先級。