字符串使用單引號’abc’。(雙引號也行。推薦;html→雙引號,js→單引號)
===嚴格等於、!==嚴格不等於
if(x) 當x爲undefined、null和0的時候都爲false;需注意當x爲0的狀況容易忽略, 當x未聲明的時候會報錯 必需要用typeof(x)!='undefined'
定義變量不使用var即表示該變量是全局變量 他歸屬於Window對象,在<script></script>之間直接定義的變量也屬於全局變量,一個頁面中多個<script></script>中的全局變量能夠互相訪問(歸屬於window),全局的變量在頁面關閉或者瀏覽器關閉的時候才被釋放掉,js也有垃圾回收機制會定時執行垃圾回收當一個變量不須要使用的時候賦值爲null就會被回收掉。
js變量重複定義後面定義的變量會覆蓋前面定義的變量。
js變量沒有塊級做用域:便是在函數中定義的變量沒有層級關係,只用在函數中定義的在整個函數內都有效的並且遵循重複定義會覆蓋。如:輸出的都是3.。。。function test() {var i = 1;if (1) { var i = 2; if (2) { var i = 3; alert(i);} alert(i);} alert(i);}
js中switch判斷時,是「全等於」,===
js函數中沒有寫return的返回值都是undefined。
js函數能夠動態的傳入參數,經過argument.length得到傳入的參數個數,arguments[index]得到參數值.函數不存在方法重載
js同名方法會覆蓋,不存在重載因此參數不一樣方法名相同的函數仍然會覆蓋.
js的類型轉換:
parseInt(arg) 將字符串轉換爲整形轉換失敗返回NaN
parseFloat(arg) 將字符串轉換爲浮點數換失敗返回NaN
Number(value) 將給定的value(能夠是任何類型)轉換爲數值換失敗返回NaN TRUE轉換爲1,false轉換爲0
String(value) 將給定的value轉爲字符串和tostring() 同樣 但當value爲null和undefined時value.tostring()會報錯,String(value)則直接返回null或undefined。
Boolen(value) 將給定的value轉爲boolen類型值,undefined、null、0、''空字符串的boolen值都爲false
關於函數:
一、functions test(a,b){return a+b;} js函數不須要生命函數的返回值和參數的類型,若是方法體有return則返回指定值,若是沒有寫明return該方法都將返回undefined
二、funciton沒有重載,但能夠動態的傳遞參數,在函數中能夠經過arguments.length得到參數個數和arguments[index]獲取參數值。
三、同名函數會覆蓋以前的函數。
四、匿名函數:a、var fuc1=function(a,b){return a+b;}調用fuc1(2,2); b、直接什麼並調用 (function(a,b){return a+b;})(2,2)
c、var fuc2=new function('a','b','return a+b'); 調用fuc2(2,2);
關於js模擬面向對象:
一、方法就是一個對象:function person(){} var p=new person(); p.name='動態添加屬性'; alert(p.name);/alert(p['name'];
二、閉包 簡單的理解就是在函數(「外部函數」)中又定義了函數(「內部函數」),而且能夠在「外部函數」以外,使用「內部函數」。function test(y) {return function (x) { return x * 2; } (y);} 調用:alert(test(5));
三、js對象能夠採用this(動態的添加屬性),function person(name,age){this.Name=name;this.Age=age;} var p=new person('tom',18); alert(p.Name);/alert(p['Name'];
四、對象中還能夠定義方法,可看做c#中類中定義方法。
五、也能夠直接 var obj=new Object(); obj.name='動態添加類屬性'; obj.fuc=function(){}; 建立類/對象。
六、能夠能夠 var boj={}; obj.name='動態添加類屬性'; obj.fuc=function(){}; 建立。
String對象相關的方法:
length屬性:獲取字符串的字符個數。(不管中文字符仍是英文字符都算1個字符。)
charAt(index)方法:獲取指定索引位置的字符。(索引從0開始)
indexOf(‘字符串’,startIndex)方法:獲取指定字符串第一次出現的位置。startIndex表示從第幾個開始搜索。
split(‘分隔符’,limit);//根據分隔符將一個字符串返回爲一個數組。limit表示要返回的數組的最大長度(可自定義)。多個分隔符使用正則表達式:var msg = 'a★b★c☆d☆e#f';var vals = msg.split(/☆|★|#/);alert(vals);
substr(startIndex,len)//從startIndex開始,截取len個字符。
substring(startIndex,stopIndex)//從startIndex開始,截取到stopIndex位置(不包括stopIndex所在的字符)。
toUpperCase()//轉換大寫、toLowerCase();//轉換小寫
match()、replace()、search()方法,正則表達式相關
正則的定義:var reg=new RegExp("\\w+");/var reg=new RegExp('\\w+','g');/var reg=/\w+/g; g:所有匹配,i:不區分大小寫匹配。
關於Array:
一、var arr=new Array(); arr[0]='爲數組賦值'; arr[1]=123; 遍歷用for(var i=0;i<arr.length;i++){alert(arr[i]} or for(var item in arr){alert(’item爲key‘);}
二、var arr=['爲數組賦值',123]; 遍歷用for(var i=0;i<arr.length;i++){alert(arr[i]} or for(var item in arr){alert(’item爲key‘);}
三、var arr=new Array('爲數組賦值',123); 遍歷用for(var i=0;i<arr.length;i++){alert(arr[i]} or for(var item in arr){alert(’item爲key‘);}
四、Array能夠當dictionary使用 : var arr=new Array(); arr['人']='REN'; alert(arr.人); 遍歷用for(var i=0;i<arr.length;i++){alert(arr[i]} or for(var item in arr){alert(’item爲key‘);}
五、dictionary的簡寫:var arr = {「人」:」ren」,「口」:」kou」} 這種簡寫的length爲0只能用forin來遍歷經過key來訪問到值。 遍歷用for(var item in arr){alert(’item爲key‘);}
六、arr.join('鏈接符'); 用鏈接符鏈接數組的各個值。不添加鏈接符默認逗號隔開。
七、arr.reverse(); 數組反轉,發回的結果爲[123,'爲數組賦值']
八、arr.sort();排序,默認從小到大排序。能夠傳入一個方法規定排序方式 arr.sort(function(a,b){return b-a;} 倒敘排列
擴展方法:
經過類對象的prototype設置擴展方法,下面爲String對象增長quote(兩邊加字符)方法
String.prototype.quote = function(quotestr) {if (!quotestr) {quotestr = "\"";}return quotestr + this + quotestr;};
擴展方法的聲明要在使用擴展方法以前執行。JS的函數沒有專門的函數默認值的語法,可是能夠不給參數傳值,不傳值的參數值就是undefined,本身作判斷來給默認值。
html