For/In循環(huán)
var person={fname:"john",lname:"Doe",age:25};
for(x in person){
txt = txt +person[x];
}
對象的特性
訪問對象屬性:
方法一:preson.lastname;
方法二:person["lastName"];
訪問對象的方法:
//對象的寫法:鍵值對的形式書寫,即使是方法也是方法名:function(){....} 即方法名:方法體
var person = {
firstName:"john",
lastName:"Doe",
id:5566;
fullName:function(){
return this.firstName+" "+this.lastName;
}
}
訪問對象的方法:person.fullName();這樣會執(zhí)行方法體;
如果訪問方式為:person.fullName;那么此時意味著訪問fullName屬性,那么鍵所對應的值會全部返回出來.
方法的特性:
function 方法名(參數(shù)1,參數(shù)2){
方法體;
return ...
}
簡述:參數(shù)只有參數(shù)名,不需要聲明, 如有返回值則寫上return,如沒有就不寫return,其他地方無兩樣
如果方法中規(guī)定的傳入?yún)?shù)是三個,那么傳入兩個或者更少是可以的,但是方法是依次取傳入的值的,如果傳入的參數(shù)大于規(guī)定的值那也是可以的,完全沒有問題
類型特性:
typeof "john" //返回string
typeof "32.1" //返回number
typeof false //返回boolean
typeof [1,2,3,4] //返回object
typeof {name:'john',age:34} //返回object
typeof NaN //返回number
typeof new Date() //返回Object
typeof function(){} //返回function
typeof null //返回object
typeof undefined //返回undefined
type myCar //返回undefined(如果沒有聲明,有聲明的話返回object)
在JavaScript中null表示什么都沒有,null是一個只有一個值的特殊類型,表示一個空對象的引用,例如:
var person = null; typeof person; 此時person的類型為對象
var person = undefined;typeof person 此時類型為undefined
在JavaScript中,undefined是一個沒有設置值的變量.
undefined和null的區(qū)別
- null的類型是對象,undefined的類型是undefined
- null === undefined 為false null == undefined 為ture
JavaScript數(shù)據(jù)類型
在JavaScript中有5種不同的數(shù)據(jù)類型:
string number boolean object function
三種對象類型Object Date Array
兩個不包含任何值的數(shù)據(jù)類型:
null undefined
constructor屬性
"john".constructor //返回函數(shù) String() { [native code] }
(3.14).constructor //返回函數(shù) Number(){ [native code] }
...
可以使用constructor屬性來查看對象是否為數(shù)組(包含字符串"Array");
function isArray(MyArray){
return myArray.constructor.toString().indexof("Array")>-1;
}
try catch throw
try 語句測試代碼塊的錯誤
catch 語句處理錯誤
throw 語句創(chuàng)建自定義錯誤
function myFuncton(){
try{
var x = document.getElementById("demo").value;
if(x=="") throw "值為空";
if(isNaN(x)) throw "不是數(shù)字";
if(x>10) throw "太大";
if(x<5) throw "太小";
}catch(err){
var y = document.getElementById("mess");
y.innerHTML="錯誤:"+err+".";
}
}
JavaScript變量提升
JavaScript中,函數(shù)及變量的聲明都將被提升到函數(shù)的最頂部.
JavaScript中,變量可以在使用后聲明,也就是變量可以先使用在聲明
例如:
x = 5;//變量x 設置為5;
elem = document.getElementById("demo");//查找元素
elem.innerHTML = x; //在元素中顯示x
var x; //聲明x
但是JavaScript的初始化不會提升
例如:
elem = document.getElementById("demo")//查找元素;
elem.innerHTML = x;
var x = 10; ///這時候聲明與初始化放在后面了,那么此時elem.innerHTML的值為undefined
注:盡量在頭部聲明你的變量
switch注意事項:
直接上案例:
var x = 10;
switch(x){
//這樣是不對的,switch語句會使用恒等計算符(===)進行比較,所以是沒有效果的
case "10":alert("hello");//類型不對
}
浮點型數(shù)據(jù)使用注意事項
# JavaScript中的所有數(shù)據(jù)都是以64位浮點型數(shù)據(jù)(float)來存儲.
# 所有的編程語言,包括JavaScript,對浮點型數(shù)據(jù)的精確度都很難確定
var x = 0.1;
var y = 0.2;
var z = x+y; //z不等于0.3
if(z==0.3) //所以這里邏輯表達式返回的是false
可以用整數(shù)的乘除法來解決:
var z = (x*10+y*10)/10; //z的結(jié)果為0.3
JavaScript字符串分行
可以向下面這種方式使用斷行語句:
var x =
"hello world!";
但是,在字符串中直接使用回車換行是會報錯的:
var x = "hello
world!";
字符串斷行需要使用反斜杠(\)
var x = "hello \
world!";
函數(shù)中,return 和所return的內(nèi)容必須同行,否則會返回undefined;
javascript:void(0)含義
javascript:void(0)中最關鍵的是void關鍵字,void是javascript中非常重要的關鍵字,該操作符指定要計算一個表達式但是不返回值
語法格式:
void func()
javaxcript:void func();
或者
void(func())
javascript:void(func())
以下例子什么都不返回
<a href="javascript:void(0)" >單擊此處什么也不會發(fā)生</a>
以下示例,在用戶點擊鏈接后會顯示警告信息
<a href="javascript:void(alert('warning!!!'))"
以下示例a=undefined;
a = void(b=5,c=7);
href="#"與href="javascript:void(0)"的區(qū)別
#包含了一個位置信息,默認的錨是top也就是網(wǎng)頁的上端.
而javascript:void(0),僅僅表示一個死鏈接
如果需要用到死鏈接,那么建議使用javascript:void(0);
函數(shù)
分號是用來分隔可執(zhí)行javascript語句
由于函數(shù)聲明不是一個可執(zhí)行語句,所以不以分號結(jié)束.
函數(shù)表達式:
var x = function(a,b){return a*b};
var z = x(4,3);
此時該匿名函數(shù)賦值給x是一條可執(zhí)行語句,所以需要分號,
該函數(shù)實際是一個匿名函數(shù)
構(gòu)造函數(shù)Function()
var myFunction = new Function("a","b","return a*b");
var x = myFunction(4,4);
實際上可以不用構(gòu)造函數(shù),直接:
var myFunction = function(a,b){return a*b}
var x = myFunction(4,4);
在javascript中,很多時候,我們需要避免使用new關鍵字.
函數(shù)提升,
在javascript中,變量的聲明以及函數(shù)的聲明默認都會提升,無論在使用前寫函數(shù)的聲明,
還是使用后寫函數(shù)的聲明都會被提前.不會出現(xiàn)undefined
自調(diào)用函數(shù)
函數(shù)表達式可以自調(diào)用
自調(diào)用表達式會自調(diào)用
如果表達式后面緊跟().則會自動調(diào)用
實例:
(function(){
var x = "hello!!!"; //我將調(diào)用自己
})();
函數(shù)可作為一個值使用
實例:
function myFunction(a,b){
return a*b;
}
var x = myFunction(4,3)*2;
函數(shù)是對象
在javascript中使用typeof操作符判斷函數(shù)的類型時返回的是function.
但是javascript函數(shù)描述為一個對象更加準確,
javascript中函數(shù)有屬性和方法
實例:
function myFunction(a,b){
return arguments.length; //該屬性返回函數(shù)調(diào)用過程接收到的參數(shù)的個數(shù)
}
var txt = myFunction.toString(); //該方法會返回函數(shù)的聲明;
javascript函數(shù)參數(shù)
顯示參數(shù):在函數(shù)定義時列出
隱示參數(shù):在函數(shù)調(diào)用時傳遞給函數(shù)真正的值
參數(shù)規(guī)則:
- 函數(shù)定義時顯示參數(shù)沒有數(shù)據(jù)類型
- 函數(shù)對隱示參數(shù)沒有進行類型檢查
- 函數(shù)對隱示參數(shù)沒有進行個數(shù)檢查
默認參數(shù):
如果函數(shù)在調(diào)用時未提供隱示參數(shù),參數(shù)會默認設置為undefined,有時這是可以接受的,但是建議最好為參數(shù)設置一個默認值,實例:
function myFunction(x,y){
if(y==undefined){
y=0;
}
}
還有一種更簡單的設置默認參數(shù)的方式
function myFunction(x,y){
y = y||0; //如果y已經(jīng)定義,則返回y,因為y是true,否則返回0,因為undefined為false.
}
Arguments對象
JavaScript函數(shù)有個內(nèi)置arguments對象.
argument對象包含了函數(shù)調(diào)用的參數(shù)數(shù)組
通過這種方式你可以很方便遭到最好一個參數(shù)的值
x = findMax(1,12,234,555,325);
function findMax(){
var i,max = 0;
for(i=0;i<arguments.length;i++){
if(arguments[i]>max){
max = arguments[i];
}
}
return max;
}
值傳遞:
在函數(shù)中調(diào)用的采納紅素是函數(shù)的隱式參數(shù).javascript隱式參數(shù)通過值來傳遞,函數(shù)僅僅只是獲取值,如果函數(shù)修改從參數(shù)的值,不會修改顯示參數(shù)的初始值(在函數(shù)外定義).隱式參數(shù)的改變在函數(shù)外是不可見的.
對象傳遞參數(shù):
在javascript中,可以引用對象的值,因此我們在函數(shù)內(nèi)部修改對象的屬性就會修改其初始值.修改對象屬性可作用于函數(shù)外部(全局變量),修改對象的屬性在函數(shù)外是可見的.
函數(shù)調(diào)用
使用構(gòu)造函數(shù)調(diào)用
function myFunction(arg1,arg2){
this.fullName=arg1;
this.lastName=arg2;
}
var x = new myFunction("john","Doe");
x.firstName;
作為函數(shù)方法調(diào)用函數(shù):
在javascript中,函數(shù)是對象,javascript函數(shù)有他的屬性和方法.
call()和apply()是預定義的函數(shù)方法,兩個方法可用于調(diào)用函數(shù),兩個方法的第一個參數(shù)必須是對象本身.
示例:
function myFunction(a,b){
return a*b;
}
//第一種方法調(diào)用
myFunction.call(myObject,10,2);
//第二種方法調(diào)用
myArray = [10,2];
myFunction.apply(myObject,myArray);
兩個方法都是用了對象本身作為第一個參數(shù),兩者的區(qū)別在于第二個參數(shù)
apply傳入的一個參數(shù)數(shù)組,而call傳入的是一個個參數(shù)