在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 教程/ HTML/ 淺談 javascript 六種數(shù)據(jù)類型以及特殊注意點
淺談 JavaScript 之事件綁定
淺談 javascript 中字符串 String 與數(shù)組 Array
淺談 javascript 中基本包裝類型
淺談 JavaScript Math 和 Number 對象
淺談 Javascript 的靜態(tài)屬性和原型屬性
淺談 JavaScript 中定義變量時有無 var 聲明的區(qū)別
淺談 JavaScript Array 對象
淺談 JavaScript 函數(shù)參數(shù)的可修改性問題
淺談 javascript 中的 instanceof 和 typeof
淺談 JavaScript 中 Date (日期對象),Math 對象
淺談 Javascript 執(zhí)行順序
淺談 javascript 函數(shù)屬性和方法
淺談 JavaScript 中面向對象技術的模擬
淺談 javascript 的原型繼承
淺談 javascript 事件取消和阻止冒泡
根據(jù)一段代碼淺談 Javascript 閉包
淺談 Javascript 面向對象編程
淺談 javascript 六種數(shù)據(jù)類型以及特殊注意點
淺談 Javascript 變量作用域問題
淺談 javascript 函數(shù)內(nèi)部屬性
淺談 javascript 中自定義模版
淺談 JavaScript 字符集
淺談 javascript 面向對象編程
淺談 JavaScript 框架分類
淺談 JavaScript 中的 Math.atan() 方法的使用
淺談 Javascript 數(shù)組與字典
淺談 JavaScript 數(shù)據(jù)類型及轉換
淺談 javascript 的調(diào)試
淺談 Javascript 嵌套函數(shù)及閉包
淺談 javascript 回調(diào)函數(shù)
淺談 JavaScript Date 日期和時間對象
淺談 Javascript 中的 Function 與 Object
淺談 JavaScript 數(shù)據(jù)類型
淺談 javascript 中 this 在事件中的應用
淺談 javascript 中的閉包
淺談 javascript 函數(shù)劫持
淺談 Javascript 中深復制
淺談 JavaScript 函數(shù)節(jié)流
淺談 JavaScript 中的 String 對象常用方法
淺談 JavaScript 事件的屬性列表
淺談 JavaScript 函數(shù)與棧
淺談 JavaScript 的事件
淺談 javascript 中的作用域
淺談 JavaScript 的執(zhí)行效率
淺談 Javascript 事件模擬
淺談 JavaScript function 函數(shù)種類
淺談 javascript 歸并方法
淺談 javascript 迭代方法
淺談 JavaScript 編程語言的編碼規(guī)范
淺談 JavaScript 實現(xiàn)面向對象中的類
淺談 Javascript 鼠標和滾輪事件
淺談 Javascript Base64 加密解密
淺談 Javascript 中勻速運動的停止條件
淺談 javascript 實現(xiàn)八大排序
淺談 javascript 的分號的使用
淺談 javascript 中 createElement 事件
淺談 javascript 的數(shù)據(jù)類型檢測
淺談 javascript 對象模型和 function 對象
淺談 Javascript 如何實現(xiàn)勻速運動
淺談 JavaScript 字符串與數(shù)組
淺談 javascript 面向對象程序設計
淺談 Javascript 事件處理程序的幾種方式

淺談 javascript 六種數(shù)據(jù)類型以及特殊注意點

在 js 中常見的六種數(shù)據(jù)類型:String 類型、Null 類型、Number 類型、Boolean 類型、Object 類型。

typeof 的注意點

涉及到數(shù)據(jù)類型,不免會提到,操作符 typeof。要注意:

  1. typeof 是操作符,不是方法。雖然我們經(jīng)常使用 typeof() 的方式獲取對象的數(shù)據(jù)類型。
  2. 對 null 取 typeof 是 object(這是因為 null 是 空的對象引用),對函數(shù)取 typeof 是 function。
alert(typeof null);    // 返回 object  
function demo(){  
      alert('demo');  
    }  
alert(typeof demo);     // 返回  function  

為各種數(shù)據(jù)類型的對象變量設置初始值

注意,如果 Object 類型的 對象變量開始不知道賦值什么,不要 var demo={};最好是 設置成 null;

var d2=null;  
d2={'key':"shit"};  

var d3='';// 字符串 默認  
var d4=0;   //Number 類型 初始值設置為 0  
var d5=null; // 對 object 類型設置初始默認值  

undefined 和 null 的區(qū)別和注意點

1、如果用 “==” 進行比較,他們是相等的,因為比較的是值

2、區(qū)分他們有兩種方法(他們的核心都是比較他們的 數(shù)據(jù)類型)

1)使用 typeof 將他們區(qū)分開

2)使用全等 “===” :比較的是 值和 數(shù)據(jù)類型,只有全都相同 才返回 true

alert(undefined == null);             //true  
alert(typeof undefined == typeof null); //false  
alert(undefined === null);             //true  

Boolean 的注意點

1、true 和 1 比較是相同,false 和 0 比較是相同(是 “==” 比較),因為內(nèi)部會實現(xiàn) 數(shù)據(jù)類型的 轉化,將 true 轉換成 1,將 false 轉換成 0. js 內(nèi)部有很多數(shù)據(jù)類型的自動轉換,這是大家一定要注意的。后面還會提到很多。但是使用 “===” 就不相等了,因為 他們的數(shù)據(jù)類型是不等的。

2、顯示轉換成 Boolean,使用 Boolean() 方法顯示轉換,需要注意的是各種數(shù)據(jù)類型,什么時候轉換成 true 什么時候轉換成 false

1)String 類型,只要不是 空字符串 都會 轉換成 true

2)Number 類型,只要不是 0 ,即使是 負數(shù),都會轉換成 true

3)Object 類型,只要 不是 null 類型,都會轉換成 true

4)Undefined 類型,都會轉換成 false

我就不做演示,大家可以自己動手試一下。

3、(***)if()語句的()內(nèi)部就是調(diào)用了 Boolean 函數(shù)

Number 類型注意點

1、float 類型 不能做精準運算

alert(0.1+0.2);// 返回 0.300000000000000004  

2、 支持 科學計數(shù)法 運算

3、NaN(Not a Number)

1)var d=0/0; 注意:在 js 里 是不會報錯的,而是返回 NaN

2)可以通過 Number.NaN 來獲取

3)NaN 和 任何 對象做運算都會返回 NaN

4)isNaN() 判斷是不是 NaN

alert(isNaN(NaN));//true  
alert(isNaN(12));//false  
alert(isNaN('123'));//false: 因為 字符串類型 的數(shù)字 可以自動轉換成  數(shù)字  
alert(isNaN('lew'));//true  
alert(isNaN(false));//(*)false: 因為 bool  值 可以轉換成數(shù)字,true 變 1,,false 變 0  

5)isNaN()內(nèi)部執(zhí)行原理:同樣適用于對象。實現(xiàn)原理:首相調(diào)用對象的 valueOf()方法,如果能轉換成數(shù)字就直接做判斷;如果不能就再調(diào)用 toString()方法,然后測試返回值。

valueOf()內(nèi)部調(diào)用了 toObject()方法,兩個方法的內(nèi)部執(zhí)行的原理:如下圖:

http://wiki.jikexueyuan.com/project/brief-talk-js/images/1.png" alt="" />

var box={  
        // 重寫  box 對象的 toString()  方法  
        toString:function(){  
              return '123';  
            }  
    };  
alert(isNaN(box));//false  
alert(box);//123   alert() 內(nèi)部也是 先調(diào)用了 對象的 valueOf()  然后調(diào)用 toString() 方法  

6)將其他數(shù)據(jù)類型轉換成 Number 類型

含有三個函數(shù):Number(): 可以針對所有的數(shù)據(jù)類型進行轉換;parseInt()和 parseFloat()只針對 字符串進行轉化。

alert(Number('123'));//123  
alert(Number('0234'));//234  
alert(Number(true));//1  
alert(Number(null));//(**)0  

// 除了 上面的  其他的都是 返回 NaN  
alert(Number(undefined))//NaN  

Number()內(nèi)部實現(xiàn)的原理:同 isNaN()也是先調(diào)用 valueOf()然后調(diào)用 toString()。所以可想而知,性能是比較差的。所以所過只要要被轉型的對象是字符串的話,就調(diào)用 parseInt()或者 parseFloat()為他們內(nèi)部不需要對類型做判斷。

parseInt()和 parseFloat()調(diào)用注意:從第一個為數(shù)字的字符開始一直到第一個部位數(shù)字的字符的前一個數(shù)字的這部分字符串轉換成數(shù)字

alert(parseInt('123leb'));//123  
alert(parseInt('123leb345'));//123  
alert(parseInt('len234'));//NaN  

當 parseInt()里面的參數(shù)是 float 類型的那么只取得數(shù)字的整數(shù)部分

alert(parseInt(56.12));//56  

String 類型

1)( 重要 )在 ECMAScript 中 字符串有不變性:字符串創(chuàng)建之后就不會再改變。

要改變一個已經(jīng)被賦值的字符串變量,首先要先銷毀變量中字符串,然后再用一個包含新值的字符串填充變量。

var d='hello';  
d=d+'shit';// 執(zhí)行過程:先將 'hello'賦值一份,然后將 d 中的字符串清空,將字符串 'hello' 和 'shit'進行拼接,然后賦值給 d 變量。(所以 字符串 的值 一旦 被 創(chuàng)建之后 就不會 改變)  

2)toString()方法將其他數(shù)據(jù)類型轉換成 String 類型。但是如果對 null 或 undefined 進行操作的話就會報錯。

3)但是 String()方法同樣能實現(xiàn) toString()的效果,但是 可以對 null 和 undefined 進行操作。

內(nèi)部原理:先 調(diào)用 toString(),如果可以轉換成字符串,就將結果直接返回。否,再進行判斷是 null 還是 undefined,然后返回‘null' 或 ‘undefined'

總結:如果知道 變量不可能是 null 或 undefined,就使用 toString()性能比 String(),因為 String()內(nèi)部還要做判斷,所以有損性能。