JavaScript 函式定義+內建函式使用+array物件+object型別
文章目錄
函式定義
兩種格式:
function 自定義函式名稱(引數1,引數2,...,引數n){
//函式體
return 返回值;
}
函式表示式寫法(匿名函式):
var 變數名稱=function(引數1,引數2,...,引數n){
//函式體
return 返回值;
}
區別:
第一種函式呼叫語句可以在函式定義之前,因為在程式執行階段,此方式的函式定義將被提升到程式的最開頭。
第二種函式呼叫語句必須放在此函式定義之後,因為只用在該程式碼被執行到時,函式才被定義。
函式引數的初始化:
這個夠強大了,頂了建構函式和過載的功能。。當然和c一樣,比Java簡潔
function add(x,y){//ES6支援(x=0,y=0)設定預設引數
if(x===undefined){
x=0;
}
//x=x||0;
//x=(x===undefined)? 0:x;
y=y||0;
return x+y;
}
console.log(add(5));//5
console.log(add(5,1));//6
變數作用域:
函式內宣告的變數為區域性變數
外為全域性變數
function run(){
var t=1;//區域性,只有函式內的程式碼能使用。
}
if(t=true){
int dog =1;//全域性
}
random()
Math.random()//隨機返回0到0.9999...
Math.random()*10//0到9.9999...
Math.floor(Math.random()*10)//0到9....
setInterval()
網頁的全域性變數在windows物件裡面
setInterval()格式:
windows.setInterval(自定義函式,毫秒數);//windows可省
setInterval(function(){//間隔1秒執行此程式碼},1000);
arduino是不是很類似呢嘻嘻~ 所以說為什麼有的微控制器用JS語言呢~ ~
void loop(){//迴圈程式碼}
例子:
setInterval(function(){console.log('hello');},1000);
//每隔一秒在控制檯上顯示hello
//下面簡化版本
setInterval("console.log('hello');",1000);
//這個有點神似java的lambda
如何停止迴圈:
var id = setInterval(
function(){
var num=Math.floor(Math.random()*1024);
console.log(num);
},3000);
clearInterval(id);//停止指定識別碼的定時迴圈
setTimeout()
指定時間到時執行一次
setTimeout(
function(){
console.log("該上課了");
},60000);
一分鐘到時顯示一次
你們看著沒有用是嗎?那麼我告訴你這東西我不讓他在控制檯輸出的話,他就厲害了。可以通過對話方塊進行人機互動。
例子:
如果你調到一毫秒的話,他就只能關閉這個頁面了,嘻嘻~
陣列物件
陣列元素從0開始編號
定義陣列:
var name = ["jack","jimmy","jam"];
var name= new Array("jack","jimmy","jam");
var name= new Array(3);//三個元素的空字串
var name = [];//空白陣列
由於陣列不僅僅時儲存編號的空間,他還是個物件,所以就有操作方法和屬性。
陣列的屬性:
var name = ["jack","jimmy","jam"];
console.log(name.length());//3
name.length = 1;//數組裡只剩下第一個元素
陣列的方法:
新增元素:
name[3]="jack";
name.push("jack");//在name陣列後面新增元素
name.unshift("jack")//在name陣列最前面新增元素
刪除元素:
name.pop();//刪除並返回陣列最後一個元素
name.shift();//刪除並返回陣列第一個元素
name.splice(1,1);//從下標1開始刪除一個元素。這樣的話刪除之後下標2成了下標一
替換新增元素:
name.splice(1,1,"jack","jimmy")//刪除下標一對應的元素,並且加入兩個元素,其中jack的下標成為1
JavaScript陣列的特性:
1.一個數組可儲存不同型別元素
2.無需指定大小,可根據定義自動擴容
3.若讀取超過陣列範圍的元素,不會產生越界錯誤,其值為undefined
4.可在一個數組中儲存另一個數組,實現多維陣列
作為學過java和c++的我來說,這個javaScript陣列真的強
讀取陣列元素:
類似c語言,for迴圈法
var name=['jack','jimmy','candy'];
var total=name.length;
for(var i=0;i<total;i++){
console.log(name[i]);
}
foreach法
從陣列第一個元素開始提取,傳遞給處理函式做引數,直到取出最後一個
name.foreach(function(val){
console.log(val);
});
object
我們稱object為物件,它是一種可儲存多組資料的資料型別,
儲存其中的元素為屬性property
陣列元素通過下標數字訪問,物件屬性通過名稱識別key
陣列編號和資料值沒什麼關聯,不直觀。所以我們如果想要表示一些相關的資料,不妨用物件,這樣的話我們呼叫就只用物件.屬性
物件的定義:
//屬性名稱不含英文數字下劃線美元符號以外字元:
var windowObj={"wall":"ON",
"door":"OFF",
"floor":"ON"};
//
var data={"@":100,
" ":"place",
"1":"number"};
物件的使用:
物件.屬性名
console.log(windowObj.door);//"OFF"
物件["屬性名"]
console.log(data["@"]);//"100"
新增物件屬性
var deng={};
deng.power = 10;
deng.LED=13;
//物件屬性可以是任意型別
deng.hello=function(){console.log("hello");}
deng.hello();執行hello方法
刪除物件屬性
delete deng.LED;
delete僅能刪除物件的屬性,無法刪除一般變數和整個物件
如果要某變數空間給系統回收,那麼將其值設為null
var obj = {'ss' : 1,
'rr':'open'};
var num= 1;
num=null;
obj=null;//清空物件內容,系統回收儲存器空間
列出物件全部屬性:
for(var key in deng){
var val=deng[key];
console.log("屬性:"+key+" 值: "+val);
}
還可通過in操作符
in操作符用於確認物件的某一屬性或方法是否存在
"power" in deng//true
"floor" in Math//true