當(dāng)前位置:首頁 > IT技術(shù) > 編程語言 > 正文

javaScript系列 [16]-語言基礎(chǔ)
2022-01-01 23:15:40

本文將介紹javaScript最基礎(chǔ)的知識點,包括但不限于JavaScript的簡單介紹、歷史、引入方式、變量、標(biāo)識符命名規(guī)范、數(shù)據(jù)類型以及操作符等內(nèi)容。
**JavaScript簡介**

概述 JavaScript是一門動態(tài)、弱類型的解釋型高級編程語言,它基于原型,支持面向?qū)ο?/code>和函數(shù)式編程等多種編程范式,通常簡稱為js。在世界上的絕大多數(shù)網(wǎng)站中都能看到JavaScript的身影,世界上所有的主流瀏覽器(Chrome、IE、Firefox、SafariOpera)都支持它。

作者 Brendan Eich

背景 JavaScript誕生于1995年,其誕生的初衷是為了減輕服務(wù)器端的壓力而在客戶端提供一種表單驗證的功能。最初命名為Mocha,1995年9月在Netscape Navigator 2.0的Beta版中改名為LiveScript,同年12月,Netscape Navigator 2.0 Beta 3中部署時被重命名為JavaScript,當(dāng)時網(wǎng)景公司與昇陽電腦公司(Sun)組成的開發(fā)聯(lián)盟為了讓這門語言搭上Java這個編程語言“熱詞”,將其臨時改名為JavaScript(其實就像現(xiàn)在某些網(wǎng)紅蹭熱度一樣)。

標(biāo)準(zhǔn) 1996年11月,網(wǎng)景正式向ECMA(歐洲計算機制造商協(xié)會)提交語言標(biāo)準(zhǔn)。1997年6月,ECMA以JavaScript語言為基礎(chǔ)制定了ECMAScript標(biāo)準(zhǔn)規(guī)范ECMA-262。JavaScript成為了ECMAScript最著名的實現(xiàn)之一。實現(xiàn)ECMAScript規(guī)范的語言還有Adobe的ActionScript和微軟的JScript。

范圍 雖然在大多數(shù)情況下,我們都認(rèn)為ECMAScript和JavaScript表達(dá)的是相同的含義,但實際上JavaScript所表達(dá)的卻比ECMAScript要廣泛的多。完整的JavaScript應(yīng)該由以下三部分組成:

? ECMAScript 由ECMA-262定義,提供核心語法功能。
? DOM 全稱Document Object Model文檔對象模型,提供訪問和操作網(wǎng)頁的API。
? BOM 全稱Browser Object Model瀏覽器對象模型,提供與瀏覽器交互的方法和接口。

歷史 ECMAScript迄今已經(jīng)歷多個版本的迭代,下面給出主要的版本歷史。

關(guān)系 ECMAScript是標(biāo)準(zhǔn)(規(guī)范),JavaScript是實現(xiàn)。H5是一種新的技術(shù),JS用于實現(xiàn)H5新標(biāo)簽深層的擴展功能。HTML表示網(wǎng)頁的核心內(nèi)容和結(jié)構(gòu),CSS用于設(shè)置網(wǎng)頁的樣式,JavaScript控制網(wǎng)頁的行為。

應(yīng)用 JavaScript主要用于瀏覽器Web、物聯(lián)網(wǎng)、游戲、桌面和移動應(yīng)用開發(fā)和以及服務(wù)器端的開發(fā)。

參考 ECMA官網(wǎng) ECMA-262規(guī)范PDF文件 布蘭登·艾克博客

**JavaScript初體驗**

在html頁面中使用JavaScript

在html頁面中編寫JavaScript代碼需要借助script標(biāo)簽,具體的使用方式有兩種。① 在頁面中嵌入JavaScript代碼。在html頁面中創(chuàng)建script標(biāo)簽,設(shè)置script標(biāo)簽的type屬性為text/javascript,并在標(biāo)簽中直接編寫JavaScript代碼即可。② 在頁面中引入外部的js文件。在html頁面中創(chuàng)建script標(biāo)簽,把javaScript代碼單獨保存在.js后綴的文件中,然后通過設(shè)置script標(biāo)簽的src屬性來引入js文件。

script 標(biāo)簽的 type 屬性可以省略,默認(rèn)值即為text/javascript
script 標(biāo)簽的 屬性(節(jié)點)主要有:type(類型)、src(資源地址)、async(異步加載)、defer(延遲執(zhí)行)、charset(字符集)等。

注釋 JavaScript遵循C語言的注釋風(fēng)格,支持單行和多行注釋。

單行注釋 // 
多行注釋 /*...*/

語句

概念 在JavaScript中,可以簡單認(rèn)為一行完整的代碼就是一條語句(statement)。
分類 整體來講,JavaScript的語句大致可以區(qū)分為聲明賦值語句控制語句兩種。
分號 JavaScript中使用分號(;)來間隔多條語句,若各語句獨占一行那么大部分情況下可省略分號。

控制輸出

JavaScript需要具體的JavaScript引擎(解析器)來解析,該引擎通常由瀏覽器提供,即JavaScript代碼需要運行在瀏覽器中。JavaScript代碼中常見的控制輸出方式有以下三種:

? 輸出到頁面 document.write()
? 彈出框顯示 alert()
? 控制臺輸出 console.log()

  /*01 彈出對話框提示*/
  alert("喜歡我就點我吧!");
  alert("小姐姐你好,我是阿貍~");
  alert("拜拜 >.< ");

  /*02 直接向在網(wǎng)頁中輸出內(nèi)容*/
  document.write("蟬鳴的夏季,剛好遇見你。");
  document.write("<h1>遇見</h1>");

  /*03 控制臺打印輸出*/
  console.log(123);
  console.log("文頂頂");
**變量**

直接量

說明 直接量(literal)指的是程序中直接使用的數(shù)據(jù)值。

當(dāng)一個值(數(shù)字、字符串等)直接出現(xiàn)在JavaScript程序中時,我們稱之為直接量。

JavaScript語言中直接量(字面量)有很多,包括數(shù)字直接量、字符串直接量、數(shù)組直接量、對象直接量以及正則表達(dá)式直接量等等,下面簡單給出一些直接量的示例。

null;            //空
18;              //數(shù)字
19.3;            //小數(shù)
"wendingding";   //字符串文本
true;            //布爾值
false;           //布爾值
/abc/gi;         //正則表達(dá)式直接量

變量基礎(chǔ)

定義 變量是編程語言中能夠存儲計算結(jié)果或表示值的抽象概念。
使用 在JavaScript語言中 變量需要先聲明再使用。
聲明 使用 var 關(guān)鍵字來聲明變量,如果省略var關(guān)鍵字那么該變量默認(rèn)成為全局變量。
作用 記錄特定的內(nèi)容,并通過變量名來訪問它們。
備注 JavaScript變量是無類型的(untype),任何變量都可以被賦予任何類型的值。
原理 當(dāng)使用var關(guān)鍵字聲明變量時,計算機會從內(nèi)存中分配儲存空間來存放不同類型的內(nèi)容。


    /*01 先聲明兩個變量,然后再輸出變量的值到控制臺*/
    var age = 18;
    var name = "wendingding";
    console.log(age);
    console.log(name);
    age = 20;
    console.log(age);                 //變量的值可以被修改
    
    /*02 可以一次性聲明多個變量*/
    var address = "北京市",className = "H5";
    console.log(address,className);   //北京市 H5

語法說明 var name_1 [ = value1][,...,name_n [ = value_n]]]

    /*聲明示例*/
    var i;
    var a = '<strong></strong>';
    var p,q;
    var x = 2,y = 3,z;
    
    /*示例說明
    * JavaScript中的=和數(shù)學(xué)中的=不一樣,在JavaScript中=是賦值運算符。
    * var a = '<strong></strong>';  這句話分成兩個部分。
    * 左值 :在等號左側(cè),是變量名(同時被賦值)
    * 右值 :在等號右側(cè),是存放進(jìn)變量中的東西(給變量賦值)
    * 備注 :使用var關(guān)鍵字多次聲明同一個變量是無所謂的(正確、無意義也不報錯)。
    * */  

命名規(guī)范

標(biāo)識符 標(biāo)識符(identifier)指的是JavaScript代碼中變量、函數(shù)、屬性的名字,或者函數(shù)的參數(shù)。標(biāo)識符(變量)在命名的時候并不能隨心所欲,也有對應(yīng)的規(guī)則和要求。下面列出具體的命名規(guī)范:

① 標(biāo)識符可以使用下劃線、字母、數(shù)字和$符號。
② 標(biāo)識符不能以數(shù)字開頭。
③ 標(biāo)識符區(qū)分大小寫(區(qū)別于HTML)。
④ 標(biāo)識符不能使用JavaScript的關(guān)鍵字和保留字。

  /*01 常見(合法)的標(biāo)識符命名方式*/
  /*純字母*/
  var age  = 18;
  var name = "wendingding";
  var stuAge  = 21;
  var stuName = "寧夏";

  /*字母、數(shù)字、下劃線、$的組合*/
  var num1 = 1.5;
  var num2 = 200;
  var num$ = num1 + num2;
  var stu_Score = 99;

  /*02 錯誤的命名演示*/
  var if = 123;               //錯誤:使用關(guān)鍵字
  var super =  "哈哈哈"        //錯誤:使用保留字
  var 2age = 123;             //錯誤:數(shù)字開頭
  var stu-address = "北京市";  //錯誤:使用了非法的-

命名風(fēng)格

JavaScript語言常用的標(biāo)識符命名風(fēng)格是駝峰標(biāo)識法(camel-case),即標(biāo)識符的名稱由多個單詞組合的時候,每個單詞的首字母大寫以區(qū)分。駝峰標(biāo)識又可以分成大駝峰標(biāo)識和小駝峰標(biāo)識,它們的區(qū)別在于整個標(biāo)識符的首字母需要大寫。

小駝峰標(biāo)識 var wenDingDing  = "神秘人";
大駝峰標(biāo)識 var WenDingDing  = "神秘人";

當(dāng)然,在寫代碼的時候給標(biāo)識符命名并非一定要使用駝峰標(biāo)識,這只是一種建議的風(fēng)格,譬如有的開發(fā)者就喜歡用下劃線來連接單詞,類似于wen_ding_ding、stu_Name這樣。類似的還有匈牙利命名法等,但在JavaScript編程中不建議使用。

JavaScript規(guī)定的關(guān)鍵字 關(guān)鍵字通常用于執(zhí)行特定的操作。

JavaScript規(guī)定的保留字 保留字是給語言未來發(fā)展而預(yù)留的。

**數(shù)據(jù)類型**

在編程語言中,能夠表示并操作的值的類型被稱為數(shù)據(jù)類型(type),能夠支持多種數(shù)據(jù)類型是每一門編程語言的基本特征。在編寫程序的時候,如果我們需要將某個(些)值保存起來以備將來使用時,就會將該 賦值給一個變量(將值保存到變量中)。

JavaScript語言的數(shù)據(jù)類型可以簡單的分成基本(簡單)類型復(fù)雜(復(fù)合)類型。

基本類型主要包括:字符串(string)、數(shù)值(number)布爾值(boolean)、Nullundefined五種。其中Null類型有一個值,即null表示為空,而undefined類型也只有一個對應(yīng)值undefined,表示變量未定義(即聲明變量后未給變量賦值)。

復(fù)雜類型主要是對象類型,包括Object對象、Function函數(shù)、RegExp正則等,這里不做具體的展開。

typeof關(guān)鍵字

如果我們需要判斷變量的類型,那么可以使用 typeof 關(guān)鍵字(操作符)。

語法 typeof 變量 | typeof(變量)
結(jié)果 typeof 關(guān)鍵字執(zhí)行后的結(jié)果總是為一個string類型的字符串。

  /*多種類型的變量*/
  var age   = 18;                     //數(shù)值類型
  var name  = "寧夏";                  //字符串類型
  var isFun = true;                   //布爾類型值
  var a;                              //未定義
  var obj   = {id:1,desc:"描述信息"};   //Object類型
  function fn() {
    console.log("我是fn函數(shù)");
  }

  console.log(typeof age);            //number
  console.log(typeof name);           //string
  console.log(typeof isFun);          //boolean
  console.log(typeof a);              //undefined
  console.log(typeof obj);            //object

  /*typeof的兩種使用方式*/
  console.log(typeof fn);             //function
  console.log(typeof(fn));            //function

  obj = null;
  console.log(typeof obj);            //object

注意 對null執(zhí)行typeof計算的結(jié)果為object,其實這被認(rèn)為是JavaScript這門語言的一個設(shè)計錯誤。

字符串類型

定義 由〇個或多個16位Unicode字符組成的字符序列。
表示 字符串可以由雙引號或單引號表示。
操作 可以通過length屬性來獲取字符串的長度,且多個字符串之間可以通過 + 來進(jìn)行拼接。

  var str1 = "Hi ~";
  var str2 = "Wendingding!";
  var str3 = str1 + " " +str2;    /*字符串的拼接 */
  console.log(str3);              /*輸出結(jié)果:Hi ~ Wendingding!*/
  console.log(str3.length);       /*輸出結(jié)果:17 */

注意 JavaScript中的字符串是不可變的,這也就意味著要改變某個變量保存的字符串,那么需要先銷毀原來的字符串然后再用另外一個包含新值的字符串來填充該變量。

    var test = 'Hi ! ';
    test = test + 'Nice to meet u ~';
    console.log(test);  //Hi ! Nice to meet u ~
    
    /*描述上述代碼的內(nèi)部執(zhí)行細(xì)節(jié)
    * 說明:上述示例代碼中 test變量的值最開始時為Hi !,而后變成了Hi ! Nice to meet u ~   
    *      但這并不意味著字符串是可變的,要想理解這一點需要把變量和字符串區(qū)分開來。
    * 上述第二行代碼的實現(xiàn)過程為(整個過程在瀏覽器后臺處理):
    * [1] 先創(chuàng)建一個能容納21位字符的新字符串。
    * [2] 在新創(chuàng)建的字符串中填充Hi ! 和 Nice to meet u ~內(nèi)容。
    * [3] 銷毀原先的Hi ! 和 Nice to meet u ~ 字符串,因為它們沒用了。
    */

布爾類型

說明 布爾類型用來表示正確和錯誤兩種狀態(tài)(同燈泡有開和關(guān)兩種狀態(tài)一樣)。
取值 布爾類型(boolean)只有兩個值,分別是true和false。
注意 布爾類型常用于條件表達(dá)式,布爾類型的值和字符串以及數(shù)值等可以相互轉(zhuǎn)換。

undefined類型

undefined類型的值也只有一個,那就是undefined。我們在使用var來聲明變量,但是沒有對該變量進(jìn)行初始化的時候,變量的值就為undefined,表示未定義。

Null類型

Null類型的值只有一個,那就是null(關(guān)鍵字),通常表示空對象指針。
注意 ① typeof null 的結(jié)果為 object 而非 null。
注意 ② 實際上,undefined的值派生自null,因此ECMA-262規(guī)定它們的相等性測試需要返回true。

  /*01 布爾類型值*/
  var boolA = true;
  var boolB = false;

  /*02 聲明變量但未賦值(未定義)*/
  var test;

  /*03 設(shè)置變量的值為null*/
  var boolA = null;

  console.log(boolA);               //null 表示空對象
  console.log(test);                //undefined 未定義

  /*04 測試undefined和null*/
  console.log(undefined == null);   //true

數(shù)值類型

定義 數(shù)值簡單說就是數(shù)字,在JavaScript語言中數(shù)值類型包含整數(shù)和浮點數(shù)(小數(shù))。
小數(shù) 浮點數(shù)就是小數(shù),數(shù)值中必須包含一個小數(shù)點,小數(shù)點后面必須至少有一位數(shù)字。
備注 實際上JavaScript內(nèi)部并不直接區(qū)分整數(shù)值和浮點數(shù)值,其所有數(shù)字均用浮點數(shù)值表示。

  /*01 數(shù)值的兩種類型*/
  var num1 = 123;       /*整型-數(shù)據(jù)1*/
  var num2 = 4.0075e7;  /*整型-數(shù)據(jù)2  科學(xué)計數(shù)發(fā)*/

  /*浮點數(shù)特點:數(shù)值中必須包含一個小數(shù)點,小數(shù)點后面必須至少有一位數(shù)字。*/
  var floatNum1 = 8.26;  /*浮點型-數(shù)據(jù)1*/
  var floatNum2 = 1.1;   /*浮點型-數(shù)據(jù)2*/
  var floatNum3 = 0.5;   /*浮點型-數(shù)據(jù)3*/
  var floatNum4 = .8;    /*浮點型-數(shù)據(jù)4-不建議*/
  var floatNum5 = 3.2e-4;/*浮點型-數(shù)據(jù)4 科學(xué)計數(shù)法*/

  /*02 整數(shù)和浮點數(shù)的默認(rèn)轉(zhuǎn)換*/
  var intNum1 = 10.0;  /*整數(shù),解析為10*/
  var intNum2 = 2.;    /*整數(shù),解析為2*/

  /* 03  浮點數(shù)注意點
   * 001 默認(rèn),當(dāng)小數(shù)點后面超過6個0,則以科學(xué)計數(shù)法的方式來表示。
   * 002 浮點數(shù)值的最高精度為17位小數(shù),但算術(shù)運算時其精度不如整數(shù)。
   * 003 JavaScript使用基于IEEE754數(shù)值的浮點格式表示,計算因此存在舍入誤差問題。
   */

進(jìn)制 JavaScript中的數(shù)值類型支持多種進(jìn)制,包括二進(jìn)制、八進(jìn)制、十進(jìn)制和十六進(jìn)制等。
說明 在進(jìn)行算術(shù)運算時,所有八進(jìn)制、十六進(jìn)制的數(shù)據(jù)最終都會轉(zhuǎn)換為十進(jìn)制的數(shù)據(jù)。
特點 八進(jìn)制的特點是數(shù)字以 0 開頭,十六進(jìn)制則以 0x0X 開頭。
補充 實際上ECMAScript并不支持八進(jìn)制直接量,且嚴(yán)格模式下八進(jìn)制直接量被禁止,因此不建議用。十六進(jìn)制值是 0 ~ 9之間的數(shù)字和a(A) ~ f(F)之間的字母 構(gòu)成,字母對應(yīng)的數(shù)字為10~15。此外,我們還可以通過調(diào)用toString方法傳遞參數(shù)的方式來實現(xiàn)進(jìn)制的轉(zhuǎn)換。

  /*進(jìn)制的轉(zhuǎn)換  通過toString方法*/
  var num1 = 17;
  console.log(num1);              //默認(rèn)以十進(jìn)制的方式打印(數(shù)字)  17
  console.log(num1.toString());   //默認(rèn)以十進(jìn)制的方式打印(字符串)
  console.log(num1.toString(2));  //設(shè)置以二進(jìn)制的方式打印(字符串) 10001
  console.log(num1.toString(8));  //設(shè)置以八進(jìn)制的方式打印(字符串) 21
  console.log(num1.toString(16)); //設(shè)置是十六進(jìn)制的方式打印(字符串)11

  /*二進(jìn)制、八進(jìn)制、16進(jìn)制的數(shù)據(jù)*/
  console.log(070);   //8進(jìn)制的數(shù)據(jù)   對應(yīng)的十進(jìn)制值為56
  console.log(0x11);  //16進(jìn)制的數(shù)據(jù)  對應(yīng)的十進(jìn)制數(shù)值為17

NaN 全稱Not a Number(非數(shù)值),NaN用于表示本來要返回數(shù)值的操作數(shù)而實際未返回的情況。

① 任何涉及NaN的操作都會返回NaN。
NaN與任何值都不相等,包括NaN自身。

說明 上面列出了NaN的兩個特點,針對NaN的這兩個特點,ECMAScript提供了isNaN() 函數(shù)。isNaN()函數(shù)接收一個參數(shù),該參數(shù)可以是任何類型的,該函數(shù)在執(zhí)行的時候會嘗試把參數(shù)轉(zhuǎn)換為數(shù)值,如果參數(shù)不能被轉(zhuǎn)換為數(shù)值(轉(zhuǎn)換失敗),那么返回true,否則返回false。

  console.log(isNaN(NaN));      //true
  console.log(isNaN(10));       //false
  console.log(isNaN("20.3"));   //false
  console.log(isNaN("5red"));   //true   無法轉(zhuǎn)換為數(shù)值
  console.log(isNaN(true));     //false
  console.log(isNaN("red"));    //true   無法轉(zhuǎn)換為數(shù)值

二進(jìn)制浮點數(shù)的誤差問題 JavaScript在使用數(shù)字(實數(shù))的時候,常常只是真實值的一個近似表示。原因就在于JavaScript采用的是IEEE-754浮點數(shù)表示法(這是一種二進(jìn)制浮點數(shù)表示法),這種表示法可以精確地表示分?jǐn)?shù),比如1/2、1/8和1/1024等,而我們開發(fā)中常用的反而都是十進(jìn)制分?jǐn)?shù),比如1/10、1/100等,神奇的地方就在于這種表示法無法精確的表示類似于0.1 、0.2和0.3這種簡單的數(shù)字。正是因為上面的原因,所以JavaScript語言中才會存在奇葩的 0.1 + 0.2 == 0.3 不成立的問題。

**類型的轉(zhuǎn)換**

在JavaScript的基本數(shù)據(jù)類型中,字符串、數(shù)值以及其他類型之間是可以相互轉(zhuǎn)換的,而這種轉(zhuǎn)換大概又可以細(xì)分成兩種,其一是在進(jìn)行算術(shù)運算時默認(rèn)會執(zhí)行的自動轉(zhuǎn)換,其二就是強制轉(zhuǎn)換了。

類型間的強制轉(zhuǎn)換

強制類型轉(zhuǎn)換需要用到一些特定的函數(shù),這些函數(shù)可以是Number()、Bumber()、String()也可以是parseInt()parseFloat()、toString()等,下面將通過代碼來演示它們的具體使用。

  /*01 Number(構(gòu)造)函數(shù)把其它類型轉(zhuǎn)換為數(shù)值*/
  console.log(Number(null));         //0
  console.log(Number(undefined));   //NaN
  console.log(Number("miaoXia"));   //NaN
  console.log(Number("18blue"));    //NaN
  console.log(Number("18"));        //18
  console.log(Number(true));        //1
  console.log(Number(false));       //0

  /*02-1 String函數(shù)用于把其它類型轉(zhuǎn)換為字符串*/
  console.log(String(null));       //"null"
  console.log(String(undefined));  //"undefined"
  console.log(String(123));        //"123"
  console.log(String(21.5));       //"21.5"
  console.log(String(-0));         //"0"
  console.log(String(true));       //"true"
  console.log(String(false));      //"false"

  /*02-2 toString函數(shù)
  * a、其實其它類型的值直接調(diào)用toString方法也能強轉(zhuǎn)為字符串
  * b、toString方法可以接收一個參數(shù),該參數(shù)用于表示轉(zhuǎn)換時的進(jìn)制數(shù)
  * c、如果toString方法的參數(shù)缺省,那么默認(rèn)采用的十進(jìn)制
  * d、null和undefined值無法調(diào)用toString方法
  * */
  console.log((123).toString());  //"123"
  console.log(true.toString());   //"true"
  console.log(false.toString());  //"false"
  console.log(NaN.toString());    //"NaN"

  /*03 Boolean函數(shù)用于將其它類型轉(zhuǎn)換為字符串*/
  console.log(Boolean(null));     //false
  console.log(Boolean(undefined));//false
  console.log(Boolean("Nice"));   //true
  console.log(Boolean(""));       //false
  console.log(Boolean(" "));      //true
  console.log(Boolean(123));      //true
  console.log(Boolean(0));        //fasle
  console.log(Boolean(NaN));      //fasle

在上面的代碼示例中Number函數(shù)用于將其他類型的數(shù)據(jù)轉(zhuǎn)換成數(shù)字,而parseInt()parseFloat()函數(shù)相對于Number()函數(shù)而言更加靈活。

parseInt()函數(shù)用于解析整數(shù),如果字符串前綴是0x或0X,則將會被解析為十六進(jìn)制數(shù)。解析規(guī)則為:跳過任意數(shù)量的前導(dǎo)空格,盡可能解析更多數(shù)值字符,并忽略數(shù)字后面的內(nèi)容,如果第一個非空格字符是非法的數(shù)字直接量,將最終返回NaN。

 /*parseInt()基本使用*/
  console.log(parseInt(" 123"));        //123 忽略前面的N個空格
  console.log(parseInt("123"));         //123
  console.log(parseInt("123.59"));      //123 僅解析為整數(shù)
  console.log(parseInt("-13.14"));      //-13
  console.log(parseInt("826 Birthday"));//826
  console.log(parseInt("Birthday826"))  //NaN
  console.log(parseInt("0.1"))          //0
  console.log(parseInt(".1"))           //NaN 整數(shù)不能以.開頭
  console.log(parseInt("0xff"))         //255 以十六進(jìn)制來解析
  console.log(parseInt("071"));         //71  十進(jìn)制處理(非八進(jìn)制)

parseInt() 被定義為declare function parseInt(s: string, radix?: number): number; 該函數(shù)的第一個參數(shù)為字符串,它還可以接收第二個參數(shù)用于指定數(shù)字轉(zhuǎn)換的進(jìn)制基數(shù),合法的取值范圍是2~36。

  console.log(parseInt("111",2));       // 7  = 1 * 2 * 2 + 1 * 2 + 1
  console.log(parseInt("aa",16));       //170 = 10 * 16 + 10
  console.log(parseInt("076",8));       //62  = 7 * 8 + 6
  console.log(parseInt("077",10));      //77

parseFloat()函數(shù)用于解析浮點數(shù)。解析規(guī)則為:跳過任意數(shù)量的前導(dǎo)空格,檢索純數(shù)字字符串后面第一個.后的不為數(shù)字的字符,并對之前所有的結(jié)果進(jìn)行返回,如果第一個非空格字符是非法的數(shù)字直接量,將最終返回NaN,如果沒有.則以整數(shù)解析的方式處理。

  /*parseFloat()基本使用*/
  console.log(parseFloat(" 123"));            //123
  console.log(parseFloat(" 123.55"));         //123.55
  console.log(parseFloat(" 8.26 Birthday"));  //8.26
  console.log(parseFloat(" Birthday 8.26"));  //NaN
  console.log(parseFloat("0.1"));             //0.1
  console.log(parseFloat(".1"));              //0.1
  console.log(parseFloat("0xff"));            //0
  console.log(parseFloat("abc 12.5"));        //NaN
  console.log(parseFloat("$12.5"));           //NaN

本文摘自 :https://www.cnblogs.com/

開通會員,享受整站包年服務(wù)立即開通 >