91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

JavaScript 精粹 基礎 進階(1)數據類型

發布時間:2020-06-06 03:21:07 來源:網絡 閱讀:165 作者:huanghanzhilian 欄目:web開發

轉載請注明出處

原文連接 http://blog.huanghanlian.com/article/5b698e54b8ea642ea9213f49

JavaScript 精粹 基礎 進階(1)數據類型

數據類型

JavaScript六種數據類型

JavaScript 精粹 基礎 進階(1)數據類型

JavaScript一共有六種數據類型,其中有五種原始類型,和一種對象類型。

JavaScript 隱式轉換

var x='The answer'+42;//The answer42
var y=42+'The answer';//42The answer

這里的加號可以理解為字符串的拼接

var x="37"-7;    //30
var y="37"+7;    //377

這里的減號會理解為減法運算,而加號會理解為字符串拼接

等于判斷

var x="1.23"==1.23;//true  當等于一邊是字符串一邊是數字的時候會嘗試把字符串轉換為數字再進行比較
var y=0==false;//true
var e=null==undefined;//true
var c=new Object()==new Object();//false
var d=[1,2]==[1,2];//false

類型不同,嘗試類型轉換和比較

類型不同,嘗試類型轉換和比較:
null == undefined 相等
number == string 轉number 1 == “1.0" // true
boolean == ? 轉number 1 == true // true
object == number | string 嘗試對象轉為基本類型 new String('hi') == ‘hi’ // true
其它:false

嚴格等于

a===b
顧名思義,它首先會判斷等號兩邊的類型,如果兩邊類型不同,返回false
如果類型相同,
類型相同,同===

    var h=null===null;//true   
    var f=undefined===undefined;//true
    var g=NaN===NaN;//false    number類型它和任何值比較都不會相等,包括和它自己
    var l=new Object()===new Object();//false   對象應該用引用去比較,而不是用值去比較,因為它們不是完全相同的對象。所以我們定義對象x和y去比較只有這樣才會是true

JavaScript 包裝對象

原始類型numberstringboolean這三種原始類型都有對應的包裝類型。

var a = “string”;
alert(a.length);//6
a.t = 3;
alert(a.t);//undefined

字符串,當把一個基本類型嘗試以對象的方式去使用它的時候,比如訪問length屬性,js會很智能的把基本類型轉換為對應的包裝類型對象。相當于new了string。當完成訪問后,這個臨時對象會被銷毀掉。所以a.t賦值為3后再去輸出a.t值是undefined

JavaScript 類型檢測

類型檢測有以下幾種

  1. typeof
  2. instanceof
  3. Object.prototype.toString
  4. constructor
  5. duck type

最常見的typeof它會返回一個字符串,非常適合函數對象和基本類型的判斷

typeof 100 === “number”
typeof true === “boolean”
typeof function () {} === “function”

typeof(undefined) ) === “undefined”
typeof(new Object() ) === “object”
typeof( [1, 2] ) === “object”
typeof(NaN ) === “number”
typeof(null) === “object”

typeof判斷一些基本類型,函數對象的時候非常方便。但是對于其他對象的類型判斷就會沒有辦法了。比如說想判斷一個對象是不是數組,如果用typeof會返回object顯然不是我想要的。

對于判斷對象類型的話,常用obj instanceof Object

[1, 2] instanceof Array === true
new Object() instanceof Array === false

function person(){};
function student(){};
student.prototype=new person();
var bosn =new student();
console.log(bosn instanceof student)//true
var one =new person();
console.log(one instanceof person)//true
console.log(bosn instanceof person)//true

Object.prototype.toString

IE6/7/8 Object.prototype.toString.apply(null) 返回”[object Object]”

Object.prototype.toString.apply([]); === “[object Array]”;
Object.prototype.toString.apply(function(){}); === “[object Function]”;
Object.prototype.toString.apply(null); === “[object Null]”
Object.prototype.toString.apply(undefined); === “[object Undefined]”

typeof
適合基本類型及function檢測,遇到null失效。

[[Class]]
通過{}.toString拿到,適合內置對象和基元類型,遇到null和undefined失效(IE678等返回[object Object])。

instanceof
適合自定義對象,也可以用來檢測原生對象,在不同iframe和window間檢測時失效。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

镇远县| 文山县| 泰州市| 徐州市| 高邮市| 昆山市| 墨脱县| 长岭县| 藁城市| 什邡市| 丁青县| 新河县| 二连浩特市| 砀山县| 毕节市| 黔南| 南和县| 治多县| 安康市| 思茅市| 麻江县| 龙井市| 永嘉县| 镇巴县| 利川市| 根河市| 曲沃县| 扶风县| 化德县| 阳新县| 鄂温| 黄平县| 阿拉善右旗| 新和县| 鄄城县| 永吉县| 宁德市| 阳春市| 绥化市| 安丘市| 谷城县|