導航:首頁 > 編程語言 > javascript數字定義

javascript數字定義

發布時間:2024-06-17 10:43:22

javascript 有幾種數據類型

Javascript的數據類型有:

1. Number 數字類型

2. String 字元串類型

3. Boolean 布爾類型

4. Function 函數

5. Object 對象

6. Null

7. Undefined 沒有定義類型




ECMAScript中有5中簡單數據類型(也稱為基本數據類型):Undefined、Null、Boolean、Number和String。還有1中復雜的數據類型————Object,Object本質上是由一組無序的名值對組成的。

其中Undefined、Null、Boolean、Number都屬於基本類型。Object、Array和Function則屬於引用類型,String有些特殊,具體的會在下面展開分析。

變數

ECMAScript中用var關鍵字來定義變數,因為js是弱類型的,所以無法確定變數一定會存儲什麼值,也就不知道變數到底會是什麼類型,而且變數的類型可以隨時改變。

這就是ECMAScript是鬆散類型的來由,所謂鬆散類型就是可以用來保存任何類型的數據。

ps:
es6中新增了let命令來聲明變數、const命令聲明一個只讀的常量。

let的用法類似於var,但是所聲明的變數,只在let命令所在的代碼塊內有效。

const一旦聲明,常量的值就不能改變。

關於let、const這里不做展開討論,可以參考阮一峰 - ECMAScript 6 入門

typeof 操作符

由於js中的變數是鬆散類型的,所以它提供了一種檢測當前變數的數據類型的方法,也就是typeof關鍵字.
通過typeof關鍵字,對這5種數據類型會返回下面的值(以字元串形式顯示)
undefined---------- 如果值未定義Undefined

boolean---------- 如果這個值是布爾值Boolean

string---------- 如果這個值是字元串String

number---------- 如果這個值是數值類型Number

object---------- 如果這個值是對象或nullObject

需要注意的是typeof null返回為object,因為特殊值null被認為是一個空的對象引用。

Undefined

Undefined類型只有一個值,即特殊的undefined。在使用var聲明變數但未對其加以初始化時,這個變數的值就是undefined。不過,一般建議盡量給變數初始化,但是在早期的js版本中是沒有規定undefined這個值的,所以在有些框架中為了兼容舊版瀏覽器,會給window對象添加undefined值。

window['undefined'] = window['undefined'];
//或者
window.undefined = window.undefined;

Null

Null類型是第二個只有一個值的數據類型,這個特殊的值是null。從邏輯角度來看,null值表示一個空對象指針,而這也正是使用typeof操作符檢測null時會返回object的原因。

var car = null;
console.log(typeof car); // "object"

如果定義的變數准備在將來用於保存對象,那麼最好將該變數初始化為null而不是其他值。這樣一來,只要直接檢測null值就可以知道相應的變數是否已經保存了一個對象的引用了。
例如:

if(car != null){
//對car對象執行某些操作
}

實際上,undefined值是派生自null值的,因此ECMA-262規定對它們的相等性測試要返回true。

console.log(undefined == null); //true

盡管null和undefined有這樣的關系,但它們的用途完全不同。無論在什麼情況下都沒有必要把一個變數的值顯式地設置為undefined,可是同樣的規則對null卻不適用。換句話說,只要意在保存對象的變數還沒有真正保存對象,就應該明確地讓該變數保存null值。這樣做不僅可以體現null作為空對象指針的慣例,而且也有助於進一步區分null和undefined。

Boolean

該類型只有兩個字面值:true和false。這兩個值與數字值不是一回事,因此true不一定等於1,而false也不一定等於0。

雖然Boolean類型的字面值只有兩個,但JavaScript中所有類型的值都有與這兩個Boolean值等價的值。要將一個值轉換為其對應的Boolean值,可以調用類型轉換函數Boolean(),例如:

var message = 'Hello World';
var messageAsBoolean = Boolean(message);

在這個例子中,字元串message被轉換成了一個Boolean值,該值被保存在messageAsBoolean變數中。可以對任何數據類型的值調用Boolean()函數,而且總會返回一個Boolean值。至於返回的這個值是true還是false,取決於要轉換值的數據類型及其實際值。下表給出了各種數據類型及其對象的轉換規則。

數據類型

轉換為true的值

轉換為false的值

Boolean true false

String 任何非空的字元串 ""(空字元串)

Number 任何非0數值(包括無窮大) 0和NAN

Object 任何對象 null

Undefined 不適用 undefined

var message = 'Hello World';
if(message)
{
alert("Value is true");
}

運行這個示例,就會顯示一個警告框,因為字元串message被自動轉換成了對應的Boolean值(true)。由於存在這種自動執行的Boolean轉換,因此確切地知道在流控制語句中使用的是什麼變數至關重要。

ps:使用!!操作符轉換布爾值
!!一般用來將後面的表達式強制轉換為布爾類型的數據(boolean),也就是只能是true或者false;

對null與undefined等其他用隱式轉換的值,用!操作符時都會產生true的結果,所以用兩個感嘆號的作用就在於將這些值轉換為「等價」的布爾值;

var foo;
alert(!foo);//undifined情況下,一個感嘆號返回的是true;
alert(!goo);//null情況下,一個感嘆號返回的也是true;
var o={flag:true};
var test=!!o.flag;//等效於var test=o.flag||false;
alert(test);

這段例子,演示了在undifined和null時,用一個感嘆號返回的都是true,用兩個感嘆號返回的就是false,所以兩個感嘆號的作用就在於,如果明確設置了變數的值(非null/undifined/0/」「等值),結果就會根據變數的實際值來返回,如果沒有設置,結果就會返回false。

還有其他的小技巧,可以參考這12個JavaScript技巧

Number

這種類型用來表示整數和浮點數值,還有一種特殊的數值,即NaN(非數值 Not a Number)。這個數值用於表示一個本來要返回數值的操作數未返回數值的情況(這樣就不會拋出錯誤了)。例如,在其他編程語言中,任何數值除以0都會導致錯誤,從而停止代碼執行。但在JavaScript中,任何數值除以0會返回NaN,因此不會影響其他代碼的執行。

NaN本身有兩個非同尋常的特點。首先,任何涉及NaN的操作(例如NaN/10)都會返回NaN,這個特點在多步計算中有可能導致問題。其次,NaN與任何值都不相等,包括NaN本身。例如,下面的代碼會返回false。

alert(NaN == NaN); //false

String

String類型用於表示由零或多個16位Unicode字元組成的字元序列,即字元串。字元串可以由單引號(')或雙引號(")表示。

String類型的特殊性

string類型有些特殊,因為字元串具有可變的大小,所以顯然它不能被直接存儲在具有固定大小的變數中。由於效率的原因,我們希望JS只復制對字元串的引用,而不是字元串的內容。但是另一方面,字元串在許多方面都和基本類型的表現相似,而字元串是不可變的這一事實(即沒法改變一個字元串值的內容),因此可以將字元串看成行為與基本類型相似的不可變引用類型

Boolean、Number、String 這三個是Javascript中的基本包裝類型,也就是這三個其實是一個構造函數,他們是Function的實例,是引用類型,至於這里的String與以上說的String是同名,是因為其實上文說的String是指字元串,這里的String指的是String這個構造函數,上面那麼寫,是為了更好的理解,因為Javascript是鬆散類型的。我們可以看下String實例化的例子:

var name = String("jwy");
alert(typeof name);//"object"
var author = "Tom";
alert(typeof name);//"string"

至於author這個會有length,substring等等這些方法,其實是String這里的方面,string只是String的一個實例,類似於C#中的String,和string,只不過這里特殊一點。

注意,typeof 變數 如果值是"string" 的話,也就是這個變數是字元串,在Javascript中,字元串是基本類型,而在C#或Java中,字元串是引用類型,但是Javascript中的String是引用類型,因為它是Javascript中定義好的基本包裝類型,在C#中,String跟string其實是一樣的。

是不是有點繞?具體的引用類型和值類型的解析看這里javascript的基本類型和引用類型

來源:www.cnblogs.com/phillyx/p/5603738.html

❷ js常用的數據類型有哪些

js基本的數據類型 :數字類型,字元串型,布爾型,undefined,null ,對象類型,數組

1、數字類型(Number)
只有一種數字類型,數字 可以是小數 ,也可以的整數
以0開頭 默認使用8進制來表示我的這個數字
以0x開頭 默認使用16進制來表述我的這個數字
如果以-開頭 默認以負數
如果我帶有e:以科學計數法來解析我的這個數字

2、字元串型(string)
字元串是存儲字元的變數,用來表示文本的數據類型,程序中的字元串是包含單引號/雙引號的,由單引號來界定我雙引號中包含的字元串 反過來
es6模板字元串("`")

3、布爾類型(boolean)

一般是用在流程式控制制語句中,字元串和數字類型都是無窮多個,然而我們的布爾數據類型只有兩個:true 和 false
這兩個個值一般用於說明某個事物是真或者假
js一般用布爾類型來比較所得到的結果

4、null(空)

關鍵字null是一個特殊的值,它表示變數為空值,用來定義空的或者是不存在的引用。
如果試圖去引用一個沒有定義的值,就會返回一個null。
這里注意一點:null並不等於"" 或者0

5、undefined(未定義)
這個值表示變數不含有值,沒有定義的值,或者被定義了一個不存在的屬性值

❸ javascript裡面的數據類型有哪些

一、六個基礎數據類型:
字元
數字
布爾
對象
null
undefined
二、其中對象數據類型常用的又有:
數組
函數
正則表達式
日期
普通意義的數組

注:ES6 又新增了第七種 Symbol 類型

❹ JS基礎回顧-數值-IEEE754

數組的索引按照32位且無符號定點整數存儲,也就是說數組索引最大值為 2 32 ,而數組以0開始,所以實際最大值為2 32 - 1

對於 & | ^ ~ 以後單獨再說,主要說明 <<, >>, >>>

ECMA相關位運算說明

完整的位運算步驟

js能精確計算(運算結果)的數值范圍是 [-2 53 , +2 53 ]
js能表示的純整數數值范圍是 [-1.8x10 308 , +1.8x10 308 ]
js能表示的純小數數值范圍是 [ -5x10 -324 , -1) ∪ (+1, 5x10 -324 ]

IEE754標准就和js中的正則表達式,unicode編碼一樣,他不是js特有的東西的,而是一種國際上通用規范,
目的其一,方便;
目的二,使程序可移植性強。
(在js中定義的數值,解釋器會幫我們把值轉化為IEEE754標準的64位浮點型,如果是位運算,解釋器會把值定義為32位整型)

了解他之前,先看一個示例

那麼,我們能不能創造出一種,利用有限的8位機器數,盡可能多的解決上述問題的方法呢?

假設,機器位為8,有如下的一段2進制編碼:

符號位 :0表示正值, 1表示負值;
指數位 :就是我們理解的平方數,在這里由於是2進制,所以,指數位的010暫且表示為 2 010 = 2 2 ,且指數的表示範圍為0 ~ 7之間。(一會說這樣做的問題)
數值位 :就是我們要表示的真實的值的部分,但是,這里的1010並不是我們通常理解的10進制 的10,因為我們要在這解決上述定點數的問題,

那麼,我們怎麼設計才能讓一條整數,小數共存的數據表示在一個硬體中呢?且簡單易懂?

但是,以(0.)作為約定的數值位默認頭是有問題的,比如:
真值 +0.001010 以我們自定義規則轉換成的二進制為,
0000 0010 ,因為機器位數為8,超過的8位要捨去,10就被丟掉了,損失了精度且保留了多餘的,沒有意義的0 。
這就引出了我們要解決的問題4

看來,我們現在需要對規則進行一些修改,我們嘗試以(1.)作為約定的數值位默認頭,還是以真值 +0.001010為例 ,那麼這個真值可以改寫為
1.010 x 2 -3 == 1.010 x 2 -011

這回可操蛋了,因為之前我們約定的指數部分的表示範圍是0 ~ 7,這個-3可怎麼辦呢,聰明的你肯定想到了,何不把指數位置的第一位也規定為符號位呢?這不就可以表示正負數了嗎,沒錯,是可以滿足需求,但是,多一個符號位的判斷會增加機器的運算復雜度負擔,那麼可以用補碼啊?沒錯,但是,如果通過指數進行數值比較的時候(注意:在對兩個值進行判斷的時候,例如 3 > 4,計算機浮點運算器會對 3 和 4 對應的64位浮點數指數位數值進行比較,如果不相等,直接返回true或false,如果想等,再進行數值位的比較),又要增加負擔,有沒有更好的辦法呢?

可推理出
真值 +0.001010 == 1.010 x 2 -3 == 1.010 x 2 -011
得指數真實表示的值為 -011 + 偏移值 011 == 000
真值 +0.001010 的自定義2進制編碼值為
0000 0100

經過以上的求證,得到新的8位機器數浮點數約定如下:

所以,圖1-1使用我們新約定的浮點數規則解碼,得到:
1.1010 x 2 010-011=-1 == 0.11010
+0.11010 == 0.9140625

先說間隙值

再說數值范圍

我們再回過頭來看看IEEE754,由於js使用的是IEEE754雙精度浮點格式(64 位),所以我們就針對64位說明。其實,和我們上面自己胡編亂造的規則基本一樣,

IEEE754雙精度浮點格式
符號位1,指數位11,數值位52,偏移值 2 11-1 - 1 == 1023

現在,我們可以自己證明

因為數值位是52位,加上約定的隱藏頭1. 那麼就是 53位,超出的部分舍棄,所以就是精度損失
但嚴謹來說,應該是不包含小數

已經證明過

我們先把0.1 和 0.2 轉化為2進制

很明顯,0.1 和 0.2 都無法用2進制精準表示,呈現出的是無限循環。

我們看一個實例,來看看IEEE如何做舍入處理的
(例子是IEEE754單精度浮點格式(32 位),沒找到64位的,自己懶得算了。。不過可以說明問題)

0.1被IEEE754雙精度浮點數舍入處理後的值為
0.

0.2被IEEE754雙精度浮點數舍入處理後的值為
0.

0.1 和 0.2 在轉換後都被進位了,所以實際值,比真實值要大一點點,所以0.1+0.2比0.3略大,暫且這么來理解,因為浮點數的運算比定點數要麻煩,又由於10.1假期結束,至此一階段筆記到此結束,之後的二階段再補浮點數運算的筆記

參考資料
計算機組成原理
http://c.biancheng.net/view/314.html
https://www.hu.com/question/21711083
https://blog.csdn.net/weixin_40805079/article/details/85234878

❺ 涓轟粈涔圝S涓鏁板肩被鍨嬪凡緇忓彲浠ヤ嬌鐢∟umber鏂規硶錛岃繕瑕佸紩鍏Number瀵硅薄姒傚康錛

JavaScript涓錛屾暟鍊肩被鍨嬫湁涓ょ嶈〃紺烘柟寮忥細鐩存帴閲忓拰Number瀵硅薄銆傝繖涓ょ嶈〃紺烘柟寮忓湪澶у氭暟鎯呭喌涓嬫槸絳変環鐨勶紝浣嗘槸瀹冧滑鏈変竴浜涢噸瑕佺殑鍖哄埆銆
鐩存帴閲忥紙涔熺О涓哄師濮嬪礆級琛ㄧず涓涓鏁板煎父閲忥紝瀹冪洿鎺ュ啓鍦ㄤ唬鐮佷腑錛屼緥濡10鎴栬3.14銆傜洿鎺ラ噺鏄涓嶅彲鍙樼殑錛屽畠浠鏄鍘熷嬬被鍨嬬殑鍊礆紝涓嶈兘璋冪敤鏂規硶錛屽彧鑳借繘琛屽熀鏈鐨勮繍綆椼
Number瀵硅薄琛ㄧず涓涓鏁板礆紝浣嗘槸瀹冩槸涓涓瀵硅薄錛岃屼笉鏄鍘熷嬬被鍨嬬殑鍊箋侼umber瀵硅薄鍙浠ヨ皟鐢ㄦ柟娉曟潵鎵ц屾洿楂樼駭鐨勬搷浣滐紝姣斿傝漿鎹涓哄瓧絎︿覆銆佹瘮杈冨ぇ灝忕瓑銆備絾鏄錛岀敱浜嶯umber瀵硅薄鏄鍙鍙樼殑錛屾墍浠ュ畠鐨勬ц兘瑕佹瘮鐩存帴閲忓樊涓浜涖
鎵浠ワ紝閫氬父鏉ヨ達紝鎴戜滑搴旇ヤ紭鍏堜嬌鐢ㄧ洿鎺ラ噺鏉ヨ〃紺烘暟鍊礆紝鍙鏈夊湪闇瑕佷嬌鐢∟umber瀵硅薄鐨勬柟娉曟椂鎵嶄嬌鐢∟umber瀵硅薄銆
瀵逛簬涓婇潰鐨勪緥瀛愶紝n1鍜宯2涓よ呴兘鍙浠ヨ皟鐢╰oString()鏂規硶鏉ュ皢鏁板艱漿鎹涓哄瓧絎︿覆錛屼絾鏄痭2鏄涓涓狽umber瀵硅薄錛屾墍浠ュ畠鍙浠ヨ皟鐢ㄦ洿澶氱殑鏂規硶銆備緥濡傦紝浣跨敤Number.isInteger()鏂規硶媯鏌ヤ竴涓鏁板兼槸鍚︿負鏁存暟鏃訛紝n1鏄鐩存帴閲忥紝鎵浠ュ畠鍙浠ョ洿鎺ヤ紶鍏`Number
鍙﹀栵紝鐢變簬Number.isInteger()鏂規硶鏄疦umber瀵硅薄鐨勪竴涓闈欐佹柟娉曪紝鑰屼笉鏄瀹炰緥鏂規硶錛屾墍浠ュ畠鏃犳硶鐩存帴鍦∟umber瀵硅薄瀹炰緥涓婅皟鐢ㄣ備緥濡傦紝鍦ㄤ笂闈㈢殑渚嬪瓙涓錛孨umber.isInteger(n1)榪斿洖true錛屽洜涓簄1鏄涓涓鐩存帴閲忥紝瀹冨彲浠ョ洿鎺ヤ紶鍏Number.isInteger()鏂規硶錛涜孨umber.isInteger(n2)榪斿洖false錛屽洜涓簄2鏄涓涓狽umber瀵硅薄瀹炰緥錛岃屼笉鏄鐩存帴閲忥紝瀹冧笉鑳界洿鎺ヤ紶鍏Number.isInteger()鏂規硶銆

鎬諱箣錛岀洿鎺ラ噺鍜孨umber瀵硅薄涓よ呴兘鍙浠ヨ〃紺烘暟鍊礆紝浣嗘槸瀹冧滑鏈変竴浜涢噸瑕佺殑鍖哄埆錛屽簲璇ユ牴鎹瀹為檯鎯呭喌鏉ラ夋嫨浣跨敤鍝縐嶆柟寮忋傞氬父鏉ヨ達紝鎴戜滑搴旇ヤ紭鍏堜嬌鐢ㄧ洿鎺ラ噺鏉ヨ〃紺烘暟鍊礆紝鍙鏈夊湪闇瑕佷嬌鐢∟umber瀵硅薄鐨勬柟娉曟椂鎵嶄嬌鐢∟umber瀵硅薄銆

❻ 簡述一下javascript定義數據類型和方法與java的異同

1、javascript是弱類型語言,定義變數時用var關鍵字(可選)且不需要也不能指定變數的類型,而java是強類型語言,定義任何變數時必須指定其類型,否則正銷無法通過編譯;
2、javascript定義函數(或函數直接量)時要使用function關鍵字,java不需要;
下面舉例說明:
1、定義變數的方法
javascript
var 變數名悉清讓=初始值(可選);或
變數名=初睜局始值(可選);如
var str="你好";
d=new Date();
java
變數修飾符(public、protected、private、static、final的有效組合) 變數類型 變數名=初始值(可選);如
public static final int Count=100;
2、定義函數的方法
javascript
function 函數名(參數列表(可選))
{

}

var(可選) 變數名=function(參數列表(可選))
{

}如
function f(a,b,c)
{

}

f2=function()
{

}
java
函數修飾符(public、protected、private、static、final、abstract的有效組合) 返回類型 函數名(參數列表(可選))
{

}(非abstract函數)

函數修飾符(public、protected、abstract的有效組合) 返回類型 函數名(參數列表(可選));如
public static void f(int a,String msg)
{

}或
public abstract int f2(float f,char c);

❼ javascript數據類型有哪些

JavaScript 字元串
字元串是存儲字元(比如 "Bill Gates")的變數。
JavaScript 數字
JavaScript 只有一種數字類型。數專字可以帶小數點,也可以不帶:屬
JavaScript 布爾
布爾(邏輯)只能有兩個值:true 或 false。
JavaScript 數組
下面的代碼創建名為 cars 的數組:
JavaScript 對象
對象由花括弧分隔。在括弧內部,對象的屬性以名稱和值對的形式 (name : value) 來定義。屬性由逗號分隔:
Undefined 和 Null
Undefined 這個值表示變數不含有值。
可以通過將變數的值設置為 null 來清空變數。

閱讀全文

與javascript數字定義相關的資料

熱點內容
計算機網路斷開如何連接 瀏覽:389
iphone定位打開了卻不能使用 瀏覽:789
vivo怎麼傳送數據到小米手機 瀏覽:134
qt文件操作的頭文件 瀏覽:321
網路發現怎麼打開 瀏覽:689
玩微信紅包10元5個包會被抓么 瀏覽:129
excel如何根據表格數據自動排名 瀏覽:275
大學生找驢友的常用app 瀏覽:563
教小孩說話的app有什麼 瀏覽:690
u盤刪除的文件找回軟體 瀏覽:13
vsd文件怎麼轉到cad 瀏覽:51
文件夾需要管理員許可權 瀏覽:778
scm相關文件 瀏覽:476
開實體店如何利用app推廣 瀏覽:579
c盤空間不足什麼文件是無用的 瀏覽:670
魅藍e不能升級固件 瀏覽:859
蘋果4S換完總成搜索不到信號 瀏覽:997
電腦系統自己怎麼升級系統 瀏覽:491
迪麗熱巴代言什麼app了 瀏覽:763
螺紋進給量怎麼編程 瀏覽:708

友情鏈接