日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

javascript 之数据类型--01

發(fā)布時(shí)間:2024/4/17 javascript 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 javascript 之数据类型--01 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

寫在前面

國慶整理資料時(shí),發(fā)現(xiàn)剛開始入門前端時(shí)學(xué)習(xí)JS 的資料,打算以一個(gè)基礎(chǔ)入門博客記錄下來,有不寫不對的多多指教;

先推薦些書籍給需要的童鞋

《JavaScript 高級(jí)程序設(shè)計(jì).pdf》第三版

?《JavaScript權(quán)威指南(第六版).pdf》

《高性能javascript.pdf》

《JavaScript語言精粹---高清版.pdf》

《你不知道的JavaScript(上卷).pdf》

《你不知道的JavaScript(中卷).pdf》

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

ECMAScript 中數(shù)據(jù)類型分為基本數(shù)據(jù)類型,復(fù)雜數(shù)據(jù)類型也稱為引用數(shù)據(jù)類型,即常說的對象;

基本數(shù)據(jù)類型是簡單的數(shù)據(jù)段,包括 String、Number、Boolean、Null、Undefined。

引用數(shù)據(jù)類型是由一組無序的名值對組成 如 Object;

基本數(shù)據(jù)類型

1、Undefined?類型

?Undefined 類型只有一個(gè)值,即 undefined。以下情況的值會(huì)是 undefined
(1)變量被聲明了,但沒有賦值,默認(rèn)值為undefined。
(2)調(diào)用函數(shù)時(shí),應(yīng)該提供的參數(shù)沒有提供,該參數(shù)等于undefined。
(3)對象沒有賦值的屬性,該屬性的值為undefined。
(4)函數(shù)沒有返回值時(shí),默認(rèn)返回undefined。
(5)未定義的變量使用typeof 返回undefined(嚴(yán)格模式下報(bào)錯(cuò))。

<script>var a;console.log(a);//undefinedfunction f(a, b, c) {console.log(c)//undefined}f(1, 2); //未傳遞的實(shí)參function fo(){}console.log(fo());//沒有明確返回值,默認(rèn)返回undefined </script>

2、Null?類型

Null 只有一個(gè)值 null,null是javascript語言的關(guān)鍵字,它表示一個(gè)特殊值,常用來描述"空值",從邏輯角度來看,null 是一個(gè)空對象指針;通常要把一個(gè)變量來保存對象,那么最好將變量初始化為null;

[注意]null是空對象指針,而[]是空數(shù)組,{}是空對象,三者不相同;

null與undefined?都是表示無、不存在,那么為什么會(huì)同時(shí)存在呢?

1、一開始null像在Java、.net里一樣,被當(dāng)成一個(gè)對象。但是javascript的值分成原始類型和對象類型兩大類,作者認(rèn)為基本類型表示”無”的值最好不是對象。
2、javascript的最初版本沒有包括錯(cuò)誤處理機(jī)制,發(fā)生數(shù)據(jù)類型不匹配時(shí),往往是自動(dòng)轉(zhuǎn)換類型或者默默地失敗。作者認(rèn)為如果null自動(dòng)轉(zhuǎn)為0,很不容易發(fā)現(xiàn)錯(cuò)誤;

null?與undefined?區(qū)別又是什么呢?

目前來說,null和undefined基本是同義的,都是表示無,只是應(yīng)用場景不太一樣?如:

null表示"沒有對象",即該處不應(yīng)該有值。典型用法是:

  • 作為函數(shù)的參數(shù),表示該函數(shù)的參數(shù)不是對象。
  • 作為對象原型鏈的終點(diǎn)。

undefined表示"缺少值",就是此處應(yīng)該有一個(gè)值,但是還沒有定義/初始化。典型用法是:

  • 變量被聲明了,但沒有賦值,默認(rèn)值為undefined。
  • 調(diào)用函數(shù)時(shí),應(yīng)該提供的參數(shù)沒有提供,該參數(shù)等于undefined。
  • 對象沒有賦值的屬性,該屬性的值為undefined。
  • 函數(shù)沒有返回值時(shí),默認(rèn)返回undefined。
  • 未定義的變量使用typeof 返回undefined(嚴(yán)格模式下報(bào)錯(cuò))。

(typeof null) //返回object 誤區(qū)

在 JavaScript 最初的實(shí)現(xiàn)中,JavaScript 中的值是由一個(gè)表示類型的標(biāo)簽和實(shí)際數(shù)據(jù)值表示的。對象的類型標(biāo)簽是0。由于 null?被設(shè)計(jì)成空指針(大多數(shù)平臺(tái)下值為0x00),因此,null的類型標(biāo)簽也成為了0,typeof null就錯(cuò)誤的返回了"object".(referenc) 但是如果修復(fù)了 會(huì)造成大量舊的js不兼容;

該現(xiàn)象有待于在ECMAScript 6中被修復(fù) (該提議已被否決). 正確的返回值將成為 typeof null === 'null'.

https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Operators/typeof?

3、Boolean?類型

Boolean 布爾類型有 true、false。在js中是區(qū)分大小寫的,即 True、False 并不是Boolean的值,雖然Boolean 只有這兩個(gè)值,但是在js中任何數(shù)據(jù)類型的值調(diào)用Boolean()函數(shù),都能返回一個(gè)Boolean值;只要記住如下規(guī)則即可:(0,-0,NaN,'',null,undefined)這六個(gè)永遠(yuǎn)為false,其它都為true

<script>var message = 'ds';if (message) {console.log('成功'+message)// 成功ds}var obj={};if(obj){console.log('成功'+obj)// 成功[object Object]}var a=0;if(a){console.log('成功'+a);}else{console.log('失敗'+a)// 失敗0}</script>

4、Number?類型

在js中使用Number 類型來表示整數(shù)與浮點(diǎn)數(shù)(數(shù)值必須包含一個(gè)小數(shù)點(diǎn));

var intNum=66; //整數(shù)
var floatNum=1.1 //浮點(diǎn)數(shù)

如果某次計(jì)算的結(jié)果超出了Javascript 數(shù)值范圍(Number.MAX_VALUE 最大值 Number.MIX_VALUE)那么這個(gè)結(jié)果就會(huì)自動(dòng)轉(zhuǎn)為Infinity,如果這個(gè)數(shù)值是負(fù)數(shù)會(huì)轉(zhuǎn)為-Infinity(負(fù)無窮),如果是正數(shù)會(huì)轉(zhuǎn)為Infinity(正無窮)

NaN:非數(shù)值(Not a Number)是一個(gè)特殊的值,表示這里本應(yīng)該是一個(gè)數(shù)值,但是并不是數(shù)值; 如

var a=10,b='str';console.log(a*b);//NaN

NaN 具有如下特點(diǎn):
1、任何與NaN的操作都是返回NaN;
2、NaN與任何值都不相等;  

<script>var a = 10, b = 'str';console.log(a * b);//NaNconsole.log(NaN == NaN)//falseconsole.log(NaN === NaN)//falseconsole.log(NaN == 'str')//false </script>

針對NaN的兩個(gè)特點(diǎn),ECMAScript定義了 isNaN()函數(shù)來確定某個(gè)變量/表達(dá)式結(jié)果是不是NaN,這個(gè)函數(shù)會(huì)嘗試把變量轉(zhuǎn)換為數(shù)值,如果不能轉(zhuǎn)換則返回true,反正返回false;  

<script>console.log(isNaN('red'));//true 不能轉(zhuǎn)換numberconsole.log(isNaN('10'));//false 能轉(zhuǎn)換numberconsole.log(isNaN(10));//false 能轉(zhuǎn)換numberconsole.log(isNaN(false));//false 能轉(zhuǎn)換numberconsole.log(isNaN(true));//false 能轉(zhuǎn)換numberconsole.log(isNaN(''));//false 能轉(zhuǎn)換number 0console.log(isNaN(undefined));//true 不能轉(zhuǎn)換numberconsole.log(isNaN('undefined'));//true 不能轉(zhuǎn)換numberconsole.log(isNaN(null));//false 能轉(zhuǎn)換number 0console.log(isNaN('null'));//true 不能轉(zhuǎn)換number</script>

typeof?基本數(shù)據(jù)類型檢查

<script>var s = 'name';console.log(typeof s)//string </script>

typeof? ? ? ? ? ? ? ? ? ? ? ? ? ? 返回以下字符串

undefined? ? ? ? ? ? ? ? ? ? ? 這個(gè)變量未定義、未初始化
object? ? ? ? ? ? ? ? ? ? ? ? ? ? 這個(gè)變量是對象或者是null
boolean? ? ? ? ? ? ? ? ? ? ? ? ?這個(gè)變量是布爾值
number? ? ? ? ? ? ? ? ? ? ? ? ? 這個(gè)變量是數(shù)值
string? ? ? ? ? ? ? ? ? ? ? ? ? ? ?這個(gè)變量是字符串
function? ? ? ? ? ? ? ? ? ? ? ? ?這個(gè)變量是函數(shù)

引用數(shù)據(jù)類型

引用類型是一種用于將數(shù)據(jù)和功能組織在一起的數(shù)據(jù)結(jié)構(gòu)(也常被成為類),引用類型的值(對象)是引用類型的一個(gè)實(shí)例。但是js中沒有類的概念,因此引用類型也可以被稱為對象,因?yàn)樗麄兠枋龅氖菍傩院头椒ǖ募?#xff1b;
ECMAScript提供了很多原生引用類型(如:Object)

Object類型

我們看到的大部分引用類型都是Object類型的實(shí)例,Object的實(shí)例本身不具備很多功能,但對于在應(yīng)用程序中存儲(chǔ)和傳輸數(shù)據(jù)而言,是非常理想的選擇。

Array類型

除了Object之外,Array算是js最常用最常用的類型。js中的數(shù)組與其他語言的數(shù)組都是數(shù)據(jù)的有序列表,因?yàn)閖s是弱類型,所以js中數(shù)組的每一項(xiàng)可以保存任何類型的數(shù)據(jù);

Date類型

js中用于構(gòu)建日期對象的引用類型

RegExp類型

js通過RegExp類型來支持正則表達(dá)式

Function類型

js中的function實(shí)際上是對象,每個(gè)函數(shù)都是Function類型的實(shí)例,而且都與其他引用類型一樣具有屬性和方法。由于函數(shù)是對象,因此函數(shù)名實(shí)際上也是一個(gè)指向函數(shù)對象的指針;

引用類型提供的屬性以及方法這里不在敘述,不知道的可以參考如下連接

http://www.w3school.com.cn/jsref/jsref_obj_array.asp

instanceof? 檢測某個(gè)實(shí)例的具體類型?

語法:

object instanceof constructor

描述:
instanceof 運(yùn)算符用來檢測 constructor.prototype 是否存在于參數(shù) object 的原型鏈上。
可以理解為 instanceof 用于判斷某個(gè)實(shí)例(對象)是否是某個(gè)類型的實(shí)例;  

var a=new Array(); alert(a instanceof Array);//true, alert(a instanceof Object)也會(huì)返回true;這是因?yàn)锳rray是object的子類。再如: function test(){}; var a=new test(); alert(a instanceof test)會(huì)返回true。

?

轉(zhuǎn)載于:https://www.cnblogs.com/CandyManPing/p/7720278.html

總結(jié)

以上是生活随笔為你收集整理的javascript 之数据类型--01的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。