JavaScript基礎總結:
基礎語法:語法
在ECMAScript中,定義 是用 var ,例如: var name="zhangsan"; ,這樣定義變量就會導致變量沒有準確的數據類型,可以隨意的轉換,在ECMAScript中,
每行的代碼可以不用 ( ; ) 號來結束 例如:
var name="zhangsan"
var password="admin";
這兩句都不會用問題,ECMA會把拆行代碼的結尾看作該語句的結尾。
變量
在ECMAScript中,定義變量有兩個地方需要注意:
(1)ECMAScript 在定義變量的時候可以不去初始化 :var test; 這種事合法的
(2)在ECMAScript中變量聲明不是必須的: var test1="hello"; test2=test1+"world"; alert(test2); 輸出結果是 helloworld
解釋:ECMAScript 的解釋程序遇到未聲明過的標識符時,用該變量名創建一個全局變量,並將其初始化爲指定的值。
數據類型
在ECMAScript中,數據類型分爲原始數據類型和引用數據類型,其中,原始數據類型分爲:Undefined、Null、Boolean、Number、String。String類型,在
ECMAScript中和別的語言不同,被當成了原始數據類型,有着固定的長度,存儲在棧中。
類型轉換
toString()的使用
在ECMAScript中定義的所有對象都有toString()方法,其中Boolean類型的toString()方法,輸出的內容由變量值決定,Number類型的toString()方法,比較特殊,
分爲默認模式和基模式,默認模式事例:var num1=10; alert(num1); var num2=10.1; alert(num2); 輸出結果全是10, 基模式事例:var num1=10; alert(num1.toString(2)); number這種帶參數的toString(),輸出將採用參數的值,作爲進制進行轉換,也就是輸出結果將是 num1的二進制
數組toString(), var arr=new Array("zhangsan","lisi","wangwu") ; alert(arr.toString()); 輸出 zhangsan,lisi,wangwu
parseInt()使用
普通模式:使用parseInt()方法,首先判斷變量的首字符是不是一個有效數字,如果不是,則返回NaN,如果是則看後面找到不是有效字符的前面,進行截取 返 回,如果遇到 10.6 這種情況,會返回10,對於整數來說,小數也不是有效字符。
基模式:var iNum1=paserInt("10",2); 傳入第二個參數,會根據第二個參數傳入的值,進行進制轉換, 本事例將返回 一個2進制的數字
parseFloat()使用
parseFloat 沒有進制轉換的基模式,其餘和parseInt()大體一致,但是 遇到 一位小數的時候,將返回一位小數,遇到二位小數將第二個小數之前部分進行截取。
強制類型轉換
Boolean() 函數
var b1=Boolean(" "); 空字符串則返回false
var b1=Boolean("hello"); 非空字符串 true
var b1=Boolean(50); 非0數字 返回true
var b1=Boolean(0); 0 返回false
var b1=Boolean(null); 返回false
var b1=Boolean(new Object()); 對象返回true
Number()函數
Number(true); 返回1
Number(false); 返回0
Number(null); 返回 0
Number(undefined); 返回NaN
Number("1.2.3"); 返回NaN
Number(new Object()); 返回NaN
String()函數
String()函數,幾乎所有的類型都可以轉換成字符串,不過其中需要注意:var s1=new String(null); 返回null ,var s1=null; alert(s1.toString()); 會報錯
引用數據類型
var obj=new Object(); 這種沒有參數的對象代碼可以簡寫成 var obj=new Object;
&& || ! 的含義
1. && 的工作方式:從第一個開始,遇到值爲false的表達式(fasle、null、undefined、0、NaN、‘’)則返回此表達式,否則返回最後一個
表達式(注意,這邊所說的表達式不一定爲boolean類型)
2. || 的工作方式:從第一個開始,遇到值爲true的表達式(與上面&&相反的其他情況)的返回此表達式,否則返回最後一個表達式
3. ! 的工作方式:對表達式的值取非(注意不是對表達式)。
Boolean引用類型難點
var booleanfalse=new Boolean(false);
alert(booleanfalse && true);
這個表達式返回的值將是true。如果單純理解 && 工作方式,那麼將是 如果booleanfalse 如果爲false,則返回第一個表達式,如果爲true,如果 爲true,則返回第二個表達式,爲什麼這裏運行後的結果變爲了true?
首先:這裏有一個問題, booleanfalse && true 進行比較,booleanfalse 是一個引用數據類型,是一個對象,在這裏進行和一個Booleand 的原始數據類型進行比較,那麼booleanfalse 會進行一個自動轉換,由對象轉換爲原始數據類型 ,參照上面對象轉換Boolean 類型的原則。 將返回true.所以在比較中booleanfalse 的實際值是true.
var booleanfalse=new Boolean(false);
var b1=booleanfalse && true;
var b2=true && booleanfalse;
alert("b1="+b1+"...b2="+b2);
這裏又會產生一個疑惑點,爲什麼得到得結果確是 b1=true b2=false 在 var b2= true && booleanfalse; 在程序運行的時候 當看到 && 表達式 前面的時候,是一個true,所以 b2的結果是一個對象 也就是booleanfalse,當進行alert 輸出的時候,程序做了一部處理, 對象.toString()處理, 在Boolean 引用數據類型中 ,對toString()進行了覆蓋處理,返回字符串true和false,所以這裏b2輸出的結果將是false,但是b2本身卻是個對象 。