JS高程3.基本概念(3)

来源:http://www.cnblogs.com/LinSL/archive/2016/12/08/6145104.html
-Advertisement-
Play Games

1.ECMAScript數值的範圍 由於記憶體的限制,在大多數瀏覽器中,ECMAScript能夠拿保存的數據的範圍是 5e-324 ~ 1.7976931348623157e+308,其中最小的數值保存在Number.MIN_VALUE中,最大的數值保存在Number.MAX_VALUE中。 如果在計 ...


1.ECMAScript數值的範圍

  由於記憶體的限制,在大多數瀏覽器中,ECMAScript能夠拿保存的數據的範圍是 5e-324 ~ 1.7976931348623157e+308,其中最小的數值保存在Number.MIN_VALUE中,最大的數值保存在Number.MAX_VALUE中。

  如果在計算的結果超出這個數值的範圍,這個數值會自動被轉換成特殊的Infinity值,具體來說,如果是負數,會被轉換成 -Infinity(負無窮),如果是正的,會被轉換成 +Infinity(正無窮)。

  需要註意的是,如果某次計算返回的是正或者負的Infinity,則該值將無法繼續參加下一次的計算,因為Infinity不是能過參與計算的數值。

  使用 isFinite()函數,可以確定一個數是否是有窮,isFinite()函數在參數位於最小和最大數值之間時會返回true。

  eg:

  var age=18;
    alert(isFinite(age));

結果:

 

 

2.NaN值:NaN即非數值(Not a Number)是一個特殊的數值,這個數值用來表示一個本來返回數值的操作數未返回數值的情況(這樣就不會拋出錯誤)

  eg:在其他編程語言中,任何數值除以0都有會導致錯誤從而停止代碼的執行。但是在ECMAScript中,任何數字除以0都會返回NaN,因此不會影響其他代碼的執行。

 

(對上文黃色部分進行說明,在高程書上是這麼寫的,但是在實際上,只有0除以0才會返回NaN值,正數除以0,返回的是Infinity,負數除以0,返回的 -Infinity)詳見以下實例:

 

var age=0;
 alert(age/0);

 

var age=18;
    alert(age/0);

 

var age=-18;
    alert(age/0);

 

  (1)NaN值的兩個特性:

  任何涉及NaN的操作都會返回NaN。

  NaN值和任何值都不相等,包括NaN本身。

  (2)isNaN()函數,該函數接收一個參數,如果該參數不是數值,它會嘗試將該值轉換為數值,而任何不能轉換為數值的值會導致這個函數返回 true。

  (3)isNaN()也適用於對象,詳見後面的章節。

 

3.數值轉換

  有三個函數可以把非數值轉換為數值:

  Number()

  parseInt()

  parseFloat()

  

  Number()可用於任何數據類型,parseInt()和parseFloat()專門用於吧字元串轉換為數值。

(1)Number()函數的具體轉換規則見高程書P30~31.

(2)由於Number()函數在轉換字元串是比較複雜而且不夠合理,因此在處理整數的時候更常用的是parseInt()函數。高程P31。

(3)在使用parseInt()函數解析八進位字面量字元串時,ECMAScript 3 和ECMAScript 5 存在不同:

  var num=parseInt(“070”);

  ECMAScript 3 認為是56(八進位),ECMAScript 5 認為是70(十進位)。因為在ECMAScript 5  Javascript引擎中,parseInt()已經有解析不具有解析八進位的能力。在ECMAScript 5 中,即使是在非嚴格模式下也是如此。

(4)可以為parseInt()函數設置第二個參數,即轉化時使用的基數(多少進位)。指定基數會影響到轉換的輸出結果:

eg:

1 var num1=parseInt("10",2);
2      var num2=parseInt("10",8);
3      var num3=parseInt("10",10);
4      var num4=parseInt("10",16);
5     alert(num1);
6     alert(num2);
7     alert(num3);
8     alert(num4);

結果圖如下:

 

註意:

  不指定基數意味著讓parseInt()決定如何解析輸入的字元串,因此為了避免錯誤的解析,我們在使用該函數時最好指定基數,多數情況下,我們要解析的都是十進位數值,因此始終將10作為第二個參數是十分有必要的。

 

(5)parseFloat()函數

  parseFloat()與paserInt()類似,也是從第一個字元(位置0)開始解析每一個字元,也是解析到字元串的尾部或是解析到遇到一個無效的浮點數字元為止。

  也就是說,字元串的第一個小數點是有效的,而第二個小數點是無效的,因此它後面的字元串將被忽略。

 

註意:

  parseFloat()只解析十進位值,它始終會忽略前導0。

  parseFloat()可以識別所有的浮點數格式。

  eg: var num=parseFloat(“3.125e7”);  //31250000

 

4.String類型

  String類型用於表示有零個或多個16位Unicode字元組成的字元序列,即字元串。可以有單引號或是雙引號表示,但是不能混合使用。

 

(1)字元字面量

  String數據類型包含一些特殊的字元字面量,叫做轉義序列。(詳見高程書P33)

(2)length屬性

  任何字元串的長度都可以通過該訪問其length屬性取得。

  eg:

  

1 var text="hello LIN!"
2     alert(text.length);

包括text中的空格符,該字元串的長度是10。

 

註意:這個屬性返回的字元數包括16位字元的數目,如果字元串包含雙位元組字元,那麼length屬性可能不會精確地返回字元串中的字元數目。

(3)字元串的特點

  ECMAScript中字元串是不可變的,字元串一旦被創建,它們的值就不會改變,要改變某個變數保存的字元串,首先要銷毀原來的字元串,然後再另一個新值的字元串填充該變數。

  eg:

  var lang=“java”;

  lang=lang+“Script”;

實現這個操作的過程是:

  首先創建一個能容納10個字元的新字元串,然後在這個字元串中填充“java”和“Script”,最後一步銷毀原來的字元串“java”和“Script”,因為這兩個字元串已經沒有用了。(這個過程在後臺發生,這也是一些舊版本的瀏覽器在拼接字元串時速度很慢的原因。)

(4)轉換為字元串

  toString()方法——返回相應值的字元串表現。

  數值,布爾值,對象和字元串值都有toString()方法。(對的,字元串也都有一個toString()方法,該方法返回字元串的一個副本。)

  一般情況下,調用toString()不用傳遞參數,但是在調用數值的toString()方法時,可以傳遞一個參數:輸出數值的基數。 

  eg:

1 var num=10;
2     alert(num.toString());
3     alert(num.toString(2));
4     alert(num.toString(8));
5     alert(num.toString(10));
6     alert(num.toString(16));

 結果圖依次如下:

  

 

  String()——該轉型函數能夠將任何類型的值轉換成字元串。String()函數遵循的規則如下:

  如果值有toString()方法,則調用該方法並返回相應的結果。

  如果值是null,這返回“null”。

  如果值是undefined,則返回“undefined”。

 

5.Object類型

  ECMAScript中的對象其實就是一組數據和功能的集合。對象可以通過執行new操作符後跟要創建的對象類型的名稱來創建。而創建Object類型的實例併為其添加屬性和(或是)方法,就可以創建自定義對象。

eg: var o=new object();

 

Object的實例具有的屬性和方法詳見高程P35。

  

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • ng-options="item.action for item in todos" ng-options表達式的基本形式, 形如 "<標簽> for <項目> in <數組> <option value="">(chosse one) </option> ng-options="item.id a ...
  • 如圖,獲取網站中問號後的參數值。 ...
  • 問題很簡單,做個上傳文件的頁面。 html頁面中簡單兩行代碼就完成基本的文件上傳頁面。如下圖。解決。 /***************************分割線********************/ 此時又來了一個新問題:如何獲取用戶上傳的這個文件的文件名、文件大小、文件類型? 效果如下圖。 ...
  • 一、負邊距與浮動佈局 1.1、負邊距 所謂的負邊距就是margin取負值的情況,如margin:-100px,margin:-100%。當一個元素與另一個元素margin取負值時將拉近距離。常見的功能如下: 1.1.1、向上移動 當多個元素同時從標準流中脫離開來時,如果前一個元素的寬度為100%寬度 ...
  • 一、標簽概述 1.HTML(英文Hyper Text Markup Language的縮寫)中文譯為“超文本標簽語言”,主要是通過HTML標簽對網頁中的文本、圖片、聲音等內容進行描述。 2.標簽分為嵌套關係與併列關係。 嵌套關係: 併列關係: 二、基本標簽 1.html標簽:作為整個html中所有標 ...
  • bootstrap框架提供了很多好用的javascript組件,可以很方便的實現常用的js效果,比如點擊彈出一個div(modal)、下拉菜單、旋轉木馬(carousel或slider),非常適合前端不專業的後端程式員使用。下麵就來看下modal和carousel如何使用。 modal即點擊彈出di ...
  • [1]原理 [2]標記清除 [3]引用計數 [4]性能問題 [5]記憶體管理 ...
  • G2 2.2.0, 『微小,但是美好的改變。』 # 一、豐富可視化交互形式 #### 選擇: [圖形的單選、多選](https://g2.alipay.com/tutorial/geom-select.html)以及[框選](https://g2.alipay.com/tutorial/ranges ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...