類型轉換指將一種類型轉換為另一種類型,那我們首先來說說JavaScript中的類型。
BigInt時一種新的數據類型,用于當整數值大于Number數據類型支持的范圍時。這種數據類型允許我們安全地對大整數執行算術操作,表示高分辨率的時間戳,使用大整數id,等等,而不需要使用庫。重要的是要記住,不能使用Number和BigInt操作數的混合執行算術運算,需要通過顯式轉換其中的一種類型。此外,出于兼容性原因,不允許在BigInt上使用一元加號(+)運算符。
javaScript中內置了很多對象。
詳情請參考MDN,
大家不要看javaScript的內置對象這么多,轉換時只需要把這么統統當做一個類型引用類型進行轉換就行,在javaScript內部中轉換也不會考慮這么多。
為了方便操作基本數據類型, ECMAScript還提供了三個特殊的引用類型,基本包裝類型,String、Boolean、Number。有了這三個類型,在需要的時候,原始類型會自動轉換成相應的包裝對象(這個過程叫自動裝箱)。自動裝箱就是臨時創建一個包裝對象,將原始類型的值封裝起來,以便調用包裝對象的函數。但是原來那個變量的值不會有任何變化!
var s1="some text";
var s2=s1.substring(2);
字符串是基本數據類型,為撒能調用方法了,這其實在后臺進行了一系列的操作
var s1=new String("some text");
var s2=s1.substring(2);
s1=null;
當然,你可以將Boolean 、Number 、String 這三個函數當作構造函數來使用,通過手動new包裝類來裝箱(得到包裝對象):
// 手動裝箱
var s1=new String("some text");
s1.toUpperCase();
typeof s1;
// "object"
// ECMA-262, section 9.1, page 30. Use null/undefined for no hint,
// (1) for number hint, and (2) for string hint.
function ToPrimitive(x, hint) {
// Fast case check.
if (IS_STRING(x)) return x;
// Normal behavior.
if (!IS_SPEC_OBJECT(x)) return x;
if (IS_SYMBOL_WRAPPER(x)) throw MakeTypeError(kSymbolToPrimitive);
if (hint==NO_HINT) hint=(IS_DATE(x)) ? STRING_HINT : NUMBER_HINT;
return (hint==NUMBER_HINT) ? DefaultNumber(x) : DefaultString(x);
}
// ECMA-262, section 8.6.2.6, page 28.
function DefaultNumber(x) {
if (!IS_SYMBOL_WRAPPER(x)) {
var valueOf=x.valueOf;
if (IS_SPEC_FUNCTION(valueOf)) {
var v=% _CallFunction(x, valueOf);
if (IsPrimitive(v)) return v;
}
var toString=x.toString;
if (IS_SPEC_FUNCTION(toString)) {
var s=% _CallFunction(x, toString);
if (IsPrimitive(s)) return s;
}
}
throw MakeTypeError(kCannotConvertToPrimitive);
}
// ECMA-262, section 8.6.2.6, page 28.
function DefaultString(x) {
if (!IS_SYMBOL_WRAPPER(x)) {
var toString=x.toString;
if (IS_SPEC_FUNCTION(toString)) {
var s=% _CallFunction(x, toString);
if (IsPrimitive(s)) return s;
}
var valueOf=x.valueOf;
if (IS_SPEC_FUNCTION(valueOf)) {
var v=% _CallFunction(x, valueOf);
if (IsPrimitive(v)) return v;
}
}
throw MakeTypeError(kCannotConvertToPrimitive);
}
ToPrimitive將input轉換為基本數據類型,PreferredType要么不傳,要么是number、string。
來看看這道網上的面試題
({}) + 1
+號操作符,只有當左右兩邊的類型相同(都為string或者number)是才進行操作。所以會經歷如下步驟:
這一類轉換換湯不換藥,轉換規則都是這樣的。
來源:ECMA-262草案/ 2019年11月7日 ECMAScript?2020語言規范
在執行過程中當js內部期望得到某種類型的值,而實際在那里的值是其他的類型,就會發生隱式類型轉換。系統內部會自動調用我們前面說ToBoolean ( argument )、ToNumber ( argument )、ToString ( argument ),嘗試轉換成期望的數據類型。
if ( !undefined && !null && !0 && !NaN && !'') {
// xxxx
}
因為在if的括號中,js期望得到boolean的值,所以對括號中每一個值都使用ToBoolean ( argument ),將它們轉化成boolean。
3 * { valueOf: function () { return 5 } };
因為在乘號的兩端,js期望得到number類型的值,所以對右邊的那個對象使用ToNumber ( argument ),得到結果5,再與乘號左邊的3相乘。
除了加號運算符,其他運算符,只要其中一方數據,那么另一方就被轉換為數字
手動調用Boolean(value)、Number(value)、String(value)完成的類型轉換。
Boolean('some text'); // true
Number("2019"); // 2019
String({a: 1}); // "[object Object]"
前面兩個類型轉換沒有什么好解釋的,我們看看最后一個String({a: 1});在內部發生的時候
我是@半糖學前端 ,專注前端技術領域分享,關注我,和我一起學習共同進步,加油!
?不會寫代碼又需要HTML文件怎么呢?會編輯Word文檔就可以,因為Word文檔能直接轉換為HTML文件,當然還是需要借助轉換工具,PDF轉換器就可以實現Word轉HTML。下面,就給大家詳細介紹下如何用迅捷PDF轉換器實現Word轉HTML。具體操作步驟都準備好了,一起來看一下吧。
??第一步,雙擊打開迅捷PDF轉換器,在主頁的左側選擇轉換格式,展開【PDF轉換成其他文件】選項,然后選擇【文件轉HTML】。?
??第二步,點擊頁面上方的【添加文件】可以把單個的文件加進來進行轉換,也可以點擊【添加文件夾】按鈕,批量添加Word文檔進行批量轉換。?
??第三步,點擊右上角的【開始轉換】就完成Word轉HTML了,如果想要更換文件存儲位置,可以勾選【自定義】按鈕,,然后選擇新的存儲位置即可。?
??就這么簡單的三步就可以實現Word轉HTML,你學會了吧。快來本站下載迅捷PDF轉換器解鎖更多文件轉換功能,雄雌文件格式轉換不求人,本站提供迅捷PDF轉換器最新版免費下載。
avaScript為unicode編碼轉換為中文
var str="\u6211\u662Funicode\u7F16\u7801";
關于這樣的數據轉換為中文問題,常用的以下方法。
1. eval解析或new Function("'+ str +'")()
var str="\\u6211\\u662Funicode\\u7F16\\u7801";
str=eval("'" + str + "'"); // "我是unicode編碼"
2. unescape 解析
方法一:
var str="\\u6211\\u662Funicode\\u7F16\\u7801";
str=unescape(str.replace(/\u/g, "%u")); // "我是unicode編碼"
方法二:
*請認真填寫需求信息,我們會在24小時內與您取得聯系。