javascript基礎語法備忘錄-變數和資料型別

c3tc3tc3t發表於2015-03-05

//javascript基礎語法備忘錄-變數和資料型別

// 定義變數使用var關鍵字 後面跟變數名,不要使用eval 和arguments為變數名

var message = "hi";
message =100; //有效但是不推薦

//如果宣告變數時未初始化,message儲存一個特殊值undefined
var message;


// 在函式中定義變數一定要使用var ,否則此變數將成為全域性變數

function test() {
var a = 1; //勿要忘記var
}

//ECMAscript有5中基本資料型別,Undefined,Null,Boolean,Number,String

//一個值使用typeof操作符 將返回一下字串,注意typeof不是函式 而是一個操作符
"undefined" //如果這個值未定義
"boolean" //如果是布林值
"string" //如果是字串
"number"//如果是數值
"object" //如果是物件或者null
"function" //如果是函式

//以下三種方式都可以
alert(typeof message); //"string"
alert(typeof (message));//"string"
alert(typeof 95); //number

//Undefined型別只有一個值,就是undefined,在使用var宣告但沒有初始化的話,這個變數值就是undefined,

var m1 ;
alert(m1 == undefined); //true

//下面與上面等價

var m2 = undefined; //沒有必要初始化undefined,未經初始化的值預設就是undefined
alert(m2 == undefined); //true


//注意包含undefined的值和尚未定義的值是不一樣的

//下面沒有宣告 var age

alert(message);//“undefined”
alert(age); //產生錯誤

//上面的程式碼第一個 顯示message的值 undefined
//第二行顯示一個錯誤 因為age沒有定義
//對未宣告的變數只能使用typeof檢測資料型別 ,但是會返回undefined,為未初始化的也會返回undefined,所以對顯示的初始化。例如字串初始化為"",數值初始化為0, 當使用typeof時,如果返回的是undefined,那麼這個變數就沒被宣告

//對未宣告的變數使用delete不會產生錯誤,


//Null型別是第二隻只有一個值的型別, typeof檢測到null時返回object,如果定義的變數用來儲存物件,應該初始化為null 這樣一來只要檢查到物件是否被儲存
//只要在儲存的變數沒有真正儲存物件,就應該初始化為null ,這樣體現了null作為空物件指標的管理。也用來區別undefined

alert(null == undefined);//ture

var cat = null;
alert(typeof cat); //object


//Boolean型別有兩個值,ture和false ,true不一定等於1,false不一定等於0 ,true和false是區分大小寫的,True和False不是Boolean的值
//將一個值轉換為Boolean 可以使用Boolean();

var t1 = "hello";
var bm = Boolean(t1);

//以下會返回true,
/*
true,非空字串,非零數字值,任何物件
*/

//以下返回false
/*
false,"",0和NaN,null,undefined
*/

//在流程判斷時錯誤的使用物件而不是布林值會產生錯誤


//在進行算術運算的時候 八進位制和十六進位制都會被轉換成十進位制,正零和負零被認為相等

//浮點數小數點後必須有一位數字,如果小數點後面沒有數字就會作為整數儲存,浮點數本身是一個整數,也會被轉換成整數

var f1 = .1;//有效但不推薦

var f2 =1.; //解析為1
var f3 =10.0 ;//解析為10.0

//數值範圍從 Number.MIN_VALUE~Number.MAX.VALUE 也就是5e-324~1.7976931348623157e+308
//如果超過這個範圍,負數轉換成-Infinity 正數Infinity
//如果某數得到了INfinity將無法參與下次計算
//可以使用isFinite()函式檢測是否在範圍內 不是返回false

var result = Number.MAX_VALUE+Number.MIN_VALUE;
alert(isFinite(result)); //false


//NaN(Not a Number) 用於表示返回一個數值操作,但是沒有返回的情況,任何NaN參與的運算結構都是NaN,它與任何值都不相等,包括自己

alert(NaN==NaN) //flase

//isNaN()接收一個引數 任何不能轉換為數值的值都會使整個函式返回true


//數值,布林值,物件,字串都有toString()方法,但null和undefined沒有 , 通過傳引數可以使toString()轉換為輸出數值的字串形式

var num = 10;
alert(num.toString(2)); //"10"
alert(num.toString(8)); //"1010"
alert(num.toString(10)); //"10"

//如果不知道轉換值是不是null或者undefined時 使用String();

alert(String(null)); //"null"
alert(String(age)); //"undefined" age沒有宣告

//Object型別
var o = new Object();
var o2 = new Object; //推薦

//每個物件都有以下方法和屬性

//constructor 用於儲存創見當前物件的建構函式 上面例子就是Object();
//hasOwnProperty(propertyName),檢查給定的屬性是否存在當前物件中 屬性名必須是字串形式
o.hasOwnProperty("name");
//isPrototypeOf()檢查傳入的物件是否是物件的原型

 

相關文章