六大資料型別
number
string
boolean (這三種是基本的資料型別)
undefined null(js 中兩個特殊的值)
object(各類資料的集合)廣義上的物件,有三個子型別:object(狹義的物件,一般都是這種型別)array(陣列)function(函式)
typeof null //返回object 歷史遺留問題,js第一版null作為object物件的一種型別
undefined == null //返回true,兩者區別null表示空物件,undefined表示未定義的原始值。轉化為number型別,null為0,undefined為nan。
undefined 、null、0、nan、""、false 轉化成boolean為false,其餘都是true,注意空物件{}、空陣列也為true。
js所有的數字都是以64位浮點數表示,即底層是沒有整數的。
number.max_value //可以表示的最大數,
1.7976931348623157e+308
number.min_value .//可以表示的最小數
5e-324
、、//超過這個範圍以infinity -infinity表示、nan是number資料型別
js採用unicode字符集,所以用unicode編碼表示某一字串例如
var f\u006f\u006f = 'abc';
foo
字串可以看成字元陣列,但是單個字元不能被新增刪除如delete s[2],會失敗。通常可以通過這樣的方式取值。
base64編碼
string='hello world"
btoa(string) // "sgvsbg8gv29ybgqh"
atob('sgvsbg8gv29ybgqh') // "hello world!"
物件:
物件就是一組「鍵值對」(key-value)的集合,是一種無序的復合資料集合。
物件鍵名可以是字串(加引號)也可以不是,因為js都會解析成字串,注意的是如果鍵名不加引號,要符合識別符號的命名規範,不能以數字開頭,否則報錯,如果是全數字js會自動解析成字串。
通過obj.p 或者object[『p』]取值,object.keys(obj)
獲取所有鍵名delete obj.p
刪除屬性(只能刪除本身屬性不能刪除繼承屬性)
in關鍵字判斷:
var obj =
'p' in obj //返回true
『tostring』 in obj //返回true 會判斷繼承來的屬性,可以通過obj.hasownproperty('tostring')返回false,因為是繼承來的屬性,不是物件本身屬性,
for( var key in obj){}用於遍歷物件
with(obj)//用於給obj中已存在的p1,p2屬性賦值,如果不存在,則會建立乙個全域性變數,不建議使用,
函式
三種宣告方式:
1.function add(x, y)
2.var f = function(x, y)
3.var add = new function('x', 'y', 'return x+y')
函式的屬性方法
test=function()
test.name //返回函式名test
test.length //返回函式定義是設定的引數個數
test.tostring() //返回函式原始碼
1、當函式外跟函式內同是定義了相同變數,區域性變數會覆蓋全域性變數值,但只在當前函式中有效,外部仍然使用全域性變數。
2、函式執行時所在的作用域是定義時的作用域而不是執行時所在的作用域。
3、值傳遞、引用傳遞,當函式引數傳遞的是值即number string boolean時,不會改變原來的值,如果是引用傳遞,即物件,傳遞的是引用,會改變原來的值
4、arguments獲取傳遞進來的實參值,在非嚴格模式下可以通過arguments[0]=3修改第乙個引數值
5、函式閉包,乙個是可以讀取函式內部的變數,二是讓這些變數始終保持在記憶體中,保持狀態,三是封裝物件的私有屬性和私有方法。
6、立即呼叫的函式表示式:
(function () ());
陣列
arr=
//由於陣列也是物件,所以存在arr['b']=1成立,但是不會改變length屬性值,它仍然是0.
arr.length = 100 //指定length屬性值,則陣列大小是100,每乙個值是undefined。
in運算子判斷陣列,ps:1 in arr //false arr[1] = 'p' 則 1 in arr//返回true
for in 遍歷陣列可以遍歷非數字鍵,跳過空位,空位跟undefined只有在遍歷是發生不同,即undefined會遍歷出來,取值都是undefined
類似陣列的物件都有length屬性,但都不會隨著length動態變化
轉化成真正的陣列:var arr = array.prototype.slice.call(arraylike);
讓其具有真正陣列的方法:array.prototype.foreach.call(arguments, function (elem, i) );
js資料型別
一.原始資料型別 1.typeof 運算子。var a alert typeof a 輸出結果為 undefined 2.undefined 未定義 型別 當變數未定義時,該變數值被預設為undefined 如 var a alert typeof a 輸出結果為 undefined 注意值unde...
js資料型別
js 基本資料型別 undefined null boolean number string js 操作符 typeof檢測給定變數的資料型別。返回值表示的型別 undefined 值未定義。boolean 值為布林型別。string 值為字串。number 值為數字。object 值為物件或nul...
js資料型別
var num 1,boo true,aa null,bb,str mary arr 1,2,4,8 obj arrnew new array 1,2,3 strnew new string 1,2,3 用 typeof 檢測變數的型別 console.log number typeof num n...