大家好芳悲,我是IT修真院成都分院第一期的學員常開洋,一枚正直純潔善良的web前端程序員
今天給大家分享一下谅年,修真院官網(wǎng)CSS(職業(yè))任務肮韧,深度思考中的知識點——JS數(shù)據(jù)類型和常用方法?
大家好惹苗,我是IT修真院成都分院第一期的學員常開洋,一枚正直純潔善良的web前端程序員
1.背景介紹
“數(shù)據(jù)類型”在數(shù)據(jù)結構中的定義“一個值的集合以及定義在這個值集上的一組操作”淋纲。在編程語言中院究,能夠表示并操作的值的類型稱做數(shù)據(jù)類型。 JavaScript 語言的每一個值业汰,都屬于某一種數(shù)據(jù)類型。JavaScript 的數(shù)據(jù)類型为障,共有六種放祟。(ES6新增第七種 Symbol 一種數(shù)據(jù)類型,它的實例是唯一且不可改變的跪妥。類型的值)
2.知識剖析
字符串
字符串值是一個由零或多個 Unicode(統(tǒng)一碼) 字符(字母、數(shù)字和標點符號)組成的鏈表侦香。 使用字符串數(shù)據(jù)類型表示 JavaScript 中的文本纽疟。 在腳本中包含字符串,方法是使用單引號或雙引號將其括起來污朽。 被單引號引起的字符串內(nèi)可以包含雙引號,而被雙引號引起的字符串內(nèi)也可以包含單引號错蝴。
實例:
var answer="Nice to meet you!";
var answer="He is called 'Bill'"; //雙引號包含單引號
var answer='He is called "Bill"'; //單引號包含雙引號
數(shù)值 number
整數(shù) var x=1 //整數(shù)通過十進制颓芭,八進制等的字面值來表示 ;
浮點數(shù) var x=3.14 //數(shù)值中必須包含一個小數(shù)點,且小數(shù)點后必須有一位數(shù)字
在JavaScript內(nèi)部官紫,所有數(shù)字都是以64位浮點數(shù)形式儲存州藕,即使整數(shù)也是如此。所以床玻,1與1.0是相同的,是同一個數(shù)贫堰。
容易造成混淆的是待牵,某些運算只有整數(shù)才能完成,此時JavaScript會自動把64位浮點數(shù)缨该,轉成32位整數(shù),然后再進行運算蛤袒,參見《運算符》一節(jié)的”位運算“部分壮不。
注意:由于浮點數(shù)不是精確的值,所以涉及小數(shù)的比較和運算要特別小心隐孽。
實例: (0.3 - 0.2) === (0.2 - 0.1)//false
極大或極小的數(shù)字可以通過科學(指數(shù))計數(shù)法來書寫:
var y=123e5; // 12300000
var z=123e-5; // 0.00123
布爾值
雖然字符串和數(shù)字數(shù)據(jù)類型實際上可以有無限多個不同的值健蕊,但布爾值數(shù)據(jù)類型只能有兩個值。 它們是文本 true(真) 和 false(假)缩功。
實例:
var x=true;
var y=false;
對象
JavaScript 中的所有事物都是對象:字符串、數(shù)值虑稼、數(shù)組、函數(shù)...(萬物皆對象)
對象是帶有屬性和方法的特殊數(shù)據(jù)類型蛛倦。
創(chuàng)建對象有兩種方法:
1.定義并創(chuàng)建對象的實例
2.使用函數(shù)來定義對象溯壶,然后創(chuàng)建新的對象實例
篇幅有限,這里就只講下創(chuàng)建直接的實例對象且改。((object)是JavaScript的核心概念,推薦:http://javascript.ruanyifeng.com/grammar/object.html)碍拆,這個例子創(chuàng)建了對象的一個新實例效扫,并向其添加了四個屬性:
person=new Object(); //定義一個名為person的對象
person.firstname="Bill"; //對象firstname屬性值為Bill
person.lastname="Gates"; //對象lastname屬性值為Gates
person.age=56; //對象age屬性值為56
person.eyecolor="blue"; //對象eyecolor屬性值為blue
替代語法(使用對象 literals):
person={firstname:"John",lastname:"Doe",age:56,eyecolor:"blue"};
null
null 數(shù)據(jù)類型在 JavaScript 中僅具有一個值:null。null 關鍵字不能用作函數(shù)或變量的名稱浩习。
null用來表示空值济丘,即沒有對象被呈現(xiàn),可以通過將變量的值設置為 null 來清空變量:
var car="Volvo"; //把字符串Volvo賦值給變量car
document.write(car + "
"); //輸出變量car摹迷,應該顯示Volvo
var car=null; //把null賦值給變量car
document.write(car + "
"); //輸出變量car,應該顯示null
undefined
如果使用的對象屬性不存在近哟,或使用的是已聲明但未賦值的變量鲫寄,undefined 值將被返回。
一個未初始化的變量的值為undefined,一個沒有傳入實參的形參變量的值為undefined,如果一個函數(shù)什么都不返回,則該函數(shù)默認返回undefined戳玫。
你可以使用嚴格相等運算符來判斷一個值是否是undefined:
var x;
if (x === undefined) {
// 執(zhí)行到這里
}
else {
// 不會執(zhí)行到這里
}
3.常見問題
怎么樣判斷值的數(shù)據(jù)類型未斑?
4.解決方案
好用的typeof
typeof可以解決大部分的數(shù)據(jù)類型判斷,是一個一元運算,typeof運算符可以返回一個值的數(shù)據(jù)類型缆镣,可能有以下結果肌似。
var a="string"; console.log(typeof a); //string
var a=1; console.log(typeof a); //number
var a=false; console.log(typeof a); //boolean
var a; console.log(typeof a); //undfined
var a = null; console.log(typeof a); //object
var a = document; console.log(typeof a); //object
var a = []; console.log(a); //object
var a = function(){}; console.log(typeof a) //function 除了可以判斷數(shù)據(jù)類型還可以判斷函數(shù)類型
這樣一來就很明顯了,除了前四個類型外,null睬澡、對象、數(shù)組返回的都是object類型斗躏;對于函數(shù)類型返回的則是function昔脯。
然后這里就可以再引申出另一個灰常熱門并且解決方法已普遍存在的問題,如何判斷數(shù)據(jù)是個數(shù)組類型云稚?
js判斷數(shù)組類型的方法(這里只說一種最簡單的方法):
instance,故名思義燕雁,“實例”鲸拥,所以instanceof 用于判斷一個變量是否是某個對象的實例,是一個三元運算---和typeof最實質(zhì)上的區(qū)別 a instanceof b?alert("true"):alert("false") //注意b值是你想要判斷的那種數(shù)據(jù)類型捏浊,不是一個字符串撞叨,比如Array:
var a=[];
console.log(a instanceof Array) //返回true
5.編碼實戰(zhàn)
6.拓展思考
如何將字符串轉換為數(shù)字
更多請參考:http://www.runoob.com/js/js-type-conversion.html
7.參考文獻
w3c:http://www.w3school.com.cn/js/js_datatypes.asp
微軟Javascript開發(fā)者文檔:https://msdn.microsoft.com/zh-cn/library/7wkd9z69(v=vs.94).aspx
重點推薦:Javascript標準參考(阮一峰)
8.更多討論:判斷數(shù)據(jù)類型還有沒有更多方法?
小課堂視頻鏈接:https://v.qq.com/x/page/x0533v0tnua.html
下期不見不散~
今天的分享就到這里啦谒所,歡迎大家點贊、轉發(fā)姐军、留言、拍磚~
下期不見不散~