摘要:第十七天筆記類型轉換隱式類型轉換隱式類型轉換是弱類型松散類型的在任何情況下都可以強制轉換定義類型類型以及類型的變量臥龍前端轉換為類型轉換為類型類型轉換為類型如果文本內容是普通的文本非數字轉換后的結果為如果文本內容是數字值轉換后的結果為對
第十七天筆記 類型轉換 隱式類型轉換
隱式類型轉換
JavaScript是弱類型/松散類型的 在任何情況下都可以強制轉換
//定義number類型 string類型以及boolean類型的變量 var num = 100; var str = "臥龍前端"; var boo = false; // 1.轉換為string類型 var result1 = "" + num;// 100 console.log(typeof result1);// string var result2 = boo + "";// true console.log(typeof result2);// string /* 2.轉換為number類型 * string類型轉換為number類型 * 如果文本內容是普通的文本(非數字) -> 轉換后的結果為 NaN * 如果文本內容是數字值 -> 轉換后的結果為對應數字值 * boolean類型轉換為number類型 * true轉換為1 * false轉換為0 */ var result3 = +str; console.log(result3);// NaN console.log(typeof result3);// number var result4 = +boo; console.log(result4);// true為1,false為0 console.log(typeof result4);// number /* 3.轉換為boolean類型 * string類型轉換為boolean類型 * 空字符串(""或"")轉換后的結果為false,其余情況都為true * number類型轉換為boolean類型 * 0或NaN轉換后的結果為false,其余情況都為true * undefined或null轉換后的結果為false */ var result5 = !!str; console.log(result5);// true console.log(typeof result5);// boolean var result6 = !!num; console.log(result6);// true console.log(typeof result6);// boolean
顯式類型轉換
使用JavaScript的包裝類型的構造函數進行類型轉換
使用數據類型的轉換函數進行類型轉換
//定義number類型、string類型以及boolean類型的變量 var num = 100; var str = "臥龍學苑"; var str1 = "100"; var str2 = "100.7" var boo = false; /* 1.轉換為string類型 * String()函數 -> String(值) * toString()方法 -> 變量名.toString() * 對象的方法 -> 將變量當作是一個對象來使用 */ var result1 = String(num); console.log(typeof result1);// string var result2 = num.toString(); console.log(typeof result2);// string /* 2.轉換為number類型 * Number()函數 -> Number(值) * parseInt()函數 -> parseInt(值) * 轉換為number類型,轉換為一個整數 * parseFloat()函數 -> parseFloat(值) * 轉換為number類型,轉換為一個浮點數 */ var result3 = Number(boo); console.log(typeof result3);// number var result4 = parseInt(str1); console.log(typeof result4);// 100 var result5 = parseFloat(str1);// 100 console.log(result5);// 100 var result6 = parseInt(str2);// 100.1 console.log(result6);// 如果當前值為小數的話,parseInt()后取整數部分 - 100 var result7 = parseFloat(str2);// 100.1 console.log(result7);// 100.1 /* 3.轉換為boolean類型 * Boolean()函數 -> Boolean(值) */ var result8 = Boolean(str); console.log(result8);// true
總結:
隱式類型轉換與顯式類型轉換的區別:
a.隱式轉換類型
優點:性能好
缺點:可讀性差
b.顯式轉換類型
優點:可讀性高
缺點:性能差
需要注意的是:任何不能正確轉換為數字值的內容 轉換成Number類型后得到的結果都是NaN
JavaScript提供了一組用于操作數據值的運算符 又稱為操作符
運算符可以按照作用的不同 或者操作變量數量的不同進行分類
算數運算符
1.如果運算數中的一個或兩個是字符串類型 JavaScript會自動轉換為數字值 在進行計算
2.如果運算數中的一個換兩個是字符串類型 但其中的字符不是數字 JavaScript會自動轉換數字值的到NaN結果
3.任何一個運算數都是NaN 結果都是NaN
4.布爾值false和true會轉轉為0和1進行計算
加法運算符
1.如果兩個操作數都是數字值的話 會進行加法計算
2.如果字符串進行加法計算 - 字符串連接運算符(拼串)
3.如果布爾類型進行加法計算 - 將布爾類型轉換為數字值 再進行加法計算
減法運算符
1.減法運算之前 先將其他類型轉換為number類型 再進行計算
2.如果字符串進行減法計算的話 - 將字符串類型轉換為數字值 再進行減法計算
3.如果布爾類型進行減法計算 - 將布爾類型轉換為數字值,再進行減法計算
求余運算符
求余運算符 用于計算兩個運算數整除后的余數
求的結果是正數還是負數 與第一個操作數是正數或負數有關(與第二個無關)
console.log(100 % 3);//1 console.log(8 % 4);//0 console.log(100 % -3);//1 console.log(8 % 4);//0 console.log(-100 % 3);//-1 console.log(-8 % 4);//0 console.log(-100 % -3);//-1 //與減法的情況保持一致 console.log("臥龍學苑" % 2);//NaN
自增運算符與自減運算符
自增運算符 用于整數值逐次+1 分為:
a.前置型:自增運算符位于運算數之前 先加1 再賦值
前置自增運算符 - ++變量名
b.后置型:自增運算符位于運算數之后 先賦值 再加1
后置自增運算符 - 變量名++
自減運算符 用于整數值逐次-1 分為:
a.前置型:自減運算符位于運算數之前 先減1 再賦值
b.后置型:自減運算符位于運算數之前 先賦值 再減1
運算符的優先級別
運算符具有計算的優先級別
1.先計算優先級別高的運算符
2.運算符的級別相同,從左至右的計算
3.運算符中優先級別最高的是“()”
4.優先計算的表達式利用"()"將其包裹起來
console.log(100 + 200 - 150 * 3);// -150 console.log(100 + 200 % 3);// 102 console.log(2 * 200 % 3);// 1 var num = 10; console.log(5 + ++num);// 16
比較運算符
JavaScript語言中的比較運算符 主要用于比較兩個操作數的值是否相等 或者大小情況
一.大于與小于比較運算符
console.log(10 > 11);//false console.log(11 > 10);//true console.log(10 >= 10);//true // 2.boolean類型 - 將boolean類型轉換為number類型 console.log(true > false);//true console.log(true > 0);//true /* 3.string類型 - a.英文; b.中文 * 英文或中文 - 將文本轉換成Unicode碼 - 對應具有數字值 * 英文單詞 - 從左至右的一次比較字母 Unicode 碼的大小 */ console.log("a" < "b");//true console.log("a" > "A");//true console.log("abc" > "cba");//false console.log("abc" > "acd");//false console.log("我" > "你");//true
二.相等與不等比較運算符
相等比較運算符
*與賦值運算符的區別
*賦值運算符(=)
*相等比較運算符(==)
不等比較運算符
*符號是"!="
*不是"<>"
相等與不等比較運算符 只比較操作數的值 并不比較類型
// 1.number類型 console.log(10 == 10);// true console.log(10 == 11);// false // 2.boolean類型 console.log(true == true);// true console.log(true == false);// false console.log(true == 1);// true // 3.string類型 console.log("a" == "a");// true console.log("a" == "b");// false console.log("100" == 100);// true
三.全等與不全等運算符 全等與不全等運算符 不僅比較值 還比較類型
console.log(10 === 10);// true console.log("10" === 10);// false console.log("10" == 10);// true
函數
isNaN()函數用于判斷其參數是否為NaN值(非數字值)
作用:判斷當前值是否為 NaN
true - 表示當前值是NaN(不是一個數字值)
false - 表示當前值不是NaN(不是一個數字值)
isFinite()函數
作用 - 判斷當前值是否為無窮大
false - 表示當前值是無窮大
true - 表示當前值是有限數值
console.log(isNaN(100));// false console.log(isNaN(Number("臥龍學苑")));// true var result = 100/0; console.log(result);// Infinity //isFinite()函數 console.log(isFinite(result));// false
邏輯與運算符
JavaScript運算符 基本用法是用于布爾類型的計算
邏輯與運算符時 如果兩個操作數都是布爾類型的話只有當兩個操作數都為true時 返回的結果才為true 否則都為false
1.將邏輯與運算符的兩個操作數 轉換為布爾類型
2.當左邊的操作數為true時 結果為右邊操作數的值
3.當左邊的操作數為false時 結果為左邊操作數的值
console.log(true && true);// true console.log(true && false);// false console.log(false && true);// false console.log(false && false);// false console.log(100 && 1);// 1 console.log(1 && 0);// 0 console.log(0 && 1);// 0 console.log(0 && 0);// 0 console.log(true && true); console.log(true && false); console.log(false && true); console.log(false && false); console.log("臥龍學苑" && "臥龍學苑");// 臥龍學苑 console.log("臥龍學苑" && "");// "" console.log("" && "臥龍學苑");// "" console.log("" && "");// "" console.log("臥龍學苑" && 1);// 1 console.log(false && 0);// false
邏輯或運算符
使用邏輯或運算符時 如果兩個操作數都是布爾類型的話 只有當其中一個操作類型數都為true時 返回的結果才為true 否則都為false
console.log(true || true);// true console.log(true || false);// true console.log(false || true);// true console.log(false || false);// false console.log(100 || 1);// 100 console.log(1 || 0);// 1 console.log(0 || 1);// 1 console.log(0 || 0);// 0 console.log(true || true); console.log(true || false); console.log(false || true); console.log(false || false); console.log("臥龍學苑" || "臥龍學苑");// 臥龍學苑 console.log("臥龍學苑" || "");// 臥龍學苑 console.log("" || "臥龍學苑");// 臥龍學苑 console.log("" || "");// ""
賦值擴展運算符
JavaScript語言中的賦值運算符用于為變量或屬性進行賦值操作
JavaScript語言中的賦值擴展運算符實際就是賦值運算符與算數運算符配合使用的簡寫模式
JavaScript語言中的賦值擴展運算符的執行效率更高
var b = 10, c = 20; var a = b + c; console.log(a);// 30 // b = b + c; // 等價寫法 - 賦值擴展運算符的性能要比賦值運算符更高 b += c; console.log(b);// 30
條件運算符
條件運算符 首先判斷一個表達式是真是假 然后根據判斷結果執行兩個給指定指令中的一個
var result = 8 > 9 ? "對" : "錯"; console.log(result); var score = 95; score > 90 ? console.log("優秀") : console.log("及格");
嵌套條件運算符
條件運算符中 每個表達式可以又是一個條件運算表達式 稱為條件運算的嵌套
優點:擴展了條件運算符本身的計算能力
缺點:可讀性比較差 性能隨著嵌套的層級越多越差
建議:不要最多不要超過三層嵌套
var score = 55; var result = score > 90 ? "優秀" : (score > 80 ? "良好" : (score > 60 ? "及格" : "不及格")); console.log(result);
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/96687.html
摘要:本文主要介紹數據類型強制轉換和自動轉換,自動轉換是基于強制轉換之上。強制轉換主要指使用和三個函數,手動將各種類型的值,分布轉換成數字字符串或者布爾值。 前言 JavaScript是一門動態語言,所謂的動態語言可以暫時理解為在語言中的一切內容都是不確定的。比如一個變量,這一時刻是個整型,下一時刻可能會變成字符串了。雖然變量的數據類型是不確定的,但是各種運算符對數據類型是有要求的。如果運算...
摘要:本文主要介紹數據類型強制轉換和自動轉換,自動轉換是基于強制轉換之上。強制轉換主要指使用和三個函數,手動將各種類型的值,分布轉換成數字字符串或者布爾值。 前言 JavaScript是一門動態語言,所謂的動態語言可以暫時理解為在語言中的一切內容都是不確定的。比如一個變量,這一時刻是個整型,下一時刻可能會變成字符串了。雖然變量的數據類型是不確定的,但是各種運算符對數據類型是有要求的。如果運算...
摘要:本文主要介紹數據類型強制轉換和自動轉換,自動轉換是基于強制轉換之上。強制轉換主要指使用和三個函數,手動將各種類型的值,分布轉換成數字字符串或者布爾值。 前言 JavaScript是一門動態語言,所謂的動態語言可以暫時理解為在語言中的一切內容都是不確定的。比如一個變量,這一時刻是個整型,下一時刻可能會變成字符串了。雖然變量的數據類型是不確定的,但是各種運算符對數據類型是有要求的。如果運算...
摘要:將他們放在堆中是為了不影響棧的效率。所以簡單數據類型的值直接存放在棧中。可以對比上面那張圖默認是調用方法的依,于是等于空字符串。空字符串中國標準時間方法返回對象的原始值,可能是字符串數值或值等,看具體的對象。,需要兩個操作數同時轉為。 你是否在面試中遇到過各種奇葩和比較細節的問題? []==[] //false []==![] //true {}==!{} //false {}==![...
閱讀 3580·2021-11-18 13:20
閱讀 2732·2021-10-15 09:40
閱讀 1750·2021-10-11 10:58
閱讀 2119·2021-09-27 13:36
閱讀 2592·2021-09-07 10:06
閱讀 1853·2021-08-11 11:21
閱讀 1430·2019-08-29 17:04
閱讀 2085·2019-08-29 14:06