国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

js 中的數(shù)據(jù)類型

Jensen / 1662人閱讀

摘要:來自你不知道的對未初始化和未聲明的變量執(zhí)行操作符都返回了值類型是第二個只有一個值的數(shù)據(jù)類型,這個特殊的值是。

基本類型
主要有:undefined、null、布爾值(Boolean)、字符串(String)、數(shù)值(Number)、Symbol

undefined

在使用 var,let,const 聲明變量但未對其加以初始化時,這個變量的值就是undefined

注意點:

undefined 是一種類型 區(qū)別于 "undefined"

番外:作用域是一套規(guī)則,用于確定在何處以及如何查找變量(標識符)。如果查找的目的是對變量進行賦值,那么就會使用LHS查詢;如果目的是獲取變量的值,就會使用RHS查詢。RHS查詢找到了一個變量,但是你嘗試對這個變量的值進行不合理的操作,比如試圖對一個非函數(shù)類型的值進行函數(shù)調(diào)用,或著引用null或undefined類型的值中的屬性,那么引擎會拋出另外一種類型的異常,叫作TypeError。ReferenceError同作用域判別失敗相關,而TypeError則代表作用域判別成功了,但是對結(jié)果的操作是非法或不合理的。 來自--《你不知道的JS》

對未初始化和未聲明的變量執(zhí)行typeof操作符都返回了undefined值;

null

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

注意點 undefined與null的關系


== 操作符會進行隱式轉(zhuǎn)換 === 不會

Boolean

注意點:

Number

注意點

NAN
NAN 與任何值進行運算都是NAN
NAN 與任何值都不相等 包括它自己

對于字符串轉(zhuǎn)換 用parseInt(),parseFloat 轉(zhuǎn)換空字符串會返回NaN(Number()對空字符返回 0)

String

幾乎所有值都具有toString() 方法;

Symbol

引用類型
Object 、Array
基本引用類型

如下~

var str = "hello"; //string 基本類型
var s2 = str.charAt(0);
alert(s2); // h

毫無疑問上面的string是一個基本類型,但是它卻能召喚出一個 charAt() 的方法,這是什么原因呢?
主要是因為在基本類型中,有三個比較特殊的存在就是:String Number Boolean,這三個基本類型都有自己對應的包裝對象。并且隨時等候召喚。包裝對象呢,其實就是對象,有相應的屬性和方法。至于這個過程是怎么發(fā)生呢,其實是在后臺偷偷發(fā)生的。

//我們平常寫程序的過程:
var str = "hello"; //string 基本類型
var s2 = str.charAt(0); //在執(zhí)行到這一句的時候 后臺會自動完成以下動作 :
( 
 var _str = new String("hello"); // 1 找到對應的包裝對象類型,然后通過包裝對象創(chuàng)建出一個和基本類型值相同的對象
 var s2 = _str.chaAt(0); // 2 然后這個對象就可以調(diào)用包裝對象下的方法,并且返回結(jié)給s2.
 _str = null;  //    3 之后這個臨時創(chuàng)建的對象就被銷毀了, str =null; 
 ) 
alert(s2);//h 
alert(str);//hello    

注意這是一瞬間的動作 實際上我們沒有改變字符串本身的值。就是做了下面的動作.這也是為什么每個字符串具有的方法并沒有改變字符串本身的原因。

由此我們可以知道,引用類型和基本包裝對象的區(qū)別在于:生存期
引用類型所創(chuàng)建的對象,在執(zhí)行的期間一直在內(nèi)存中,而基本包裝對象只是存在了一瞬間。

所以我們無法直接給基本類型添加方法:

var str = "hello";
str.number = 10; //假設我們想給字符串添加一個屬性number ,后臺會有如下步驟
{ 
 var _str = new String("hello"); // 1 找到對應的包裝對象類型,然后通過包裝對象創(chuàng)建出一個和基本類型值相同的對象
  _str.number = 10; // 2 通過這個對象調(diào)用包裝對象下的方法 但結(jié)果并沒有被任何東西保存
 _str =null; // 3 這個對象又被銷毀
 }
alert(str.number); //undefined  當執(zhí)行到這一句的時候,因為基本類型本來沒有屬性,后臺又會重新重復上面的步驟
{ 
 var str = new String("hello"); // 1 找到基本包裝對象,然后又新開辟一個內(nèi)存,創(chuàng)建一個值為hello對象
 str.number = undefined   // 2 因為包裝對象下面沒有number這個屬性,所以又會重新添加,因為沒有值,所以值是未定義;然后彈出結(jié)果
 str =null; // 3 這個對象又被銷毀
 }

那么我們怎么才能給基本類型添加方法或者屬性呢?
答案是在基本包裝對象的原型下面添加,每個對象都有原型。

//給字符串添加方法  要寫到對應的包裝對象的原型下才行
var str = "hello";
String.prototype.last= fuction(){ 
    return this.charAt(this.length);
}; 
str.last(); // 5 執(zhí)行到這一句,后臺依然會偷偷的干這些事
{ 
    var _str = new String("hello");// 找到基本包裝對象,new一個和字符串值相同的對象,
    _str.last();  // 通過這個對象找到了包裝對象下的方法并調(diào)用 
    _str =null; //  這個對象被銷毀
}

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/103857.html

相關文章

  • JS中的六大數(shù)據(jù)類型

    摘要:創(chuàng)建數(shù)組的基本方式有兩種第一種是使用構(gòu)造函數(shù),如下所示第二種是使用數(shù)組字面量表示法,如下所示類型每個函數(shù)都是類型的實例,而且都與其他引用類型一樣具有屬性和方法。 js中有六種數(shù)據(jù)類型,包括五種基本數(shù)據(jù)類型(Number,String,Boolean,Undefined,Null),和一種復雜數(shù)據(jù)類型(Object)。 typeof 操作符由于js中的變量是松散類型的,所以它提供了一種檢...

    劉厚水 評論0 收藏0
  • js的輸出方式以及js的基本數(shù)據(jù)類型

    摘要:的輸出方式瀏覽器彈出警告彈框,它會阻塞代碼執(zhí)行彈框,它顯示的內(nèi)容會默認轉(zhuǎn)換成字符串顯示例如彈出一個可輸入的彈框,還有兩個按鈕確認和取消點擊確定,返回在輸入框輸入的內(nèi)容,點擊取消返回空確認彈框有兩個按鈕,確認和取消,點擊確認返回為點擊取消為, js的輸出方式: 1、alert();瀏覽器彈出警告彈框,它會阻塞代碼執(zhí)行;alert彈框,它顯示的內(nèi)容會默認轉(zhuǎn)換成字符串顯示; 例如:alert...

    weizx 評論0 收藏0
  • js筆記內(nèi)容

    摘要:定義運算符用來判斷一個構(gòu)造函數(shù)的屬性所指向的對象是否存在另外一個要檢測對象的原型鏈上,用于引用類型。但其實,實例的來自于構(gòu)造函數(shù)的。 一、關于css 樣式優(yōu)先級: 行內(nèi)樣式>id選擇器樣式>類選擇器樣式>標簽選擇器樣式>通配符選擇器的樣式>繼承樣式>默認樣式 二、關于js 關于問題:**JavaScript中的所有事物都是對象??** 從typeof和instanceo...

    n7then 評論0 收藏0
  • JS數(shù)據(jù)類型 與 內(nèi)存堆棧

    摘要:所以相對于簡單數(shù)據(jù)類型而言,他們占用內(nèi)存比較小,如果放在堆中,查找會浪費很多時間,而把堆中的數(shù)據(jù)放入棧中也會影響棧的效率。六總結(jié)本文總結(jié)了數(shù)據(jù)類型及其聲明賦值更新時在內(nèi)存堆棧中的表現(xiàn),可以更深入的理解這些數(shù)據(jù)類型。 JS數(shù)據(jù)類型 與 內(nèi)存堆棧 一、前言 JS的數(shù)據(jù)類型已經(jīng)是大家都很熟悉的東西了,但是大家是否對這些數(shù)據(jù)類型在內(nèi)存中的分配了解,甚至在操作這些變量時,內(nèi)存中是如何表現(xiàn)的,本文...

    nodejh 評論0 收藏0
  • 基礎數(shù)據(jù)結(jié)構(gòu)及js數(shù)據(jù)存儲

    摘要:引用數(shù)據(jù)類型及堆內(nèi)存引用數(shù)據(jù)類型是保存在堆內(nèi)存中的對象,他的大小是不固定的。基礎數(shù)據(jù)類型在變量對象里可以直接對應對應的值,而引用數(shù)據(jù)類型是存儲在堆里的,在變量對象中對應的是堆內(nèi)存的地址。因為我們修改本質(zhì)上是修改了堆內(nèi)存里的數(shù)據(jù)。 ? ??? ??因為以前前端開發(fā)跟數(shù)據(jù)存儲打交道比較少,javascript又具有自動垃圾回收機制。數(shù)據(jù)結(jié)構(gòu)以及存儲相關的概念,其實是很容易被前端er忽略的。...

    Brenner 評論0 收藏0
  • JS的{} + {}與{} + []的結(jié)果是什么?

    摘要:對于與的設計在中所設計的純對象類型的與方法,它們的返回如下方法返回值對象本身。與三個強制轉(zhuǎn)換函數(shù),所對應的就是在標準中的三個內(nèi)部運算轉(zhuǎn)換的對照表。 在JS中的運算符共同的情況中,(+)符號是很常見的一種,它有以下的使用情況: 數(shù)字的加法運算,二元運算 字符串的連接運算,二元運算,最高優(yōu)先 正號,一元運算,可延伸為強制轉(zhuǎn)換其他類型的運算元為數(shù)字類型 當然,如果考慮多個符號一起使用時,...

    2json 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<