1. ECMAScript不存在塊級做用域,所以在循環內部定義的變量,在循環外也是能夠訪問的
eg:
var count =10;
fpr(var i=0; i<count; i++){
alert(i);
}
alert(i); //10數組
2. ECMAScript的函數能夠定義任意個參數,傳入任意個參數二者能夠不對應;
在調用函數時傳入的參數會存放在arguments[]中,定義函數時寫的參數至關於爲arguments[]中對應的參數起別名
arguments[]的長度由調用函數時傳入的參數決定
在二者存在對應關係時,修改任意一個的值,另外一個也會同時改變函數
eg:
function showArguments(num1,num2,num3){
num2 = 10;
arguments[2] = 100;
console.log(num1+' '+num2+' '+num3+': '+arguments[0]+' '+arguments[1]+' '+arguments[2]);
}對象
showArguments(); //"undefined 10 undefined: undefined undefined 100"
showArguments(1); //"1 10 undefined: 1 undefined 100"
showArguments(1,1); //"1 10 undefined: 1 10 100"
showArguments(1,1,1); //"1 10 100: 1 10 100"
showArguments(1,1,1,1); //"1 10 100: 1 10 100"ip
3. ECMAScript的全部函數的參數都是按值傳遞的,會把調用時參數的值付給函數內部的參數,
(ps:當參數是基本數據類型時,不關函數如何操做都不會改變外部參數的值;
可是當參數是引用數據類型時,由於外部參數和內部參數指向同一內存區域,
在函數內改變對象屬後,在其餘地方訪問該對象的也是改變後的,
不過一樣的在函數內改變參數的值指向其餘地址,依然不會影響外部參數的值)
eg:
var obj = new Object();內存
function setName(obj){
obj.name = "Regis";
}ci
function setTitle(obj){
obj.title = "king of lucis";
obj = new Object();
obj.title = "nilheim";
}
setName(obj);
setTitle(obj);
console.log(obj.name); //"Regis"
console.log(obj.title) //"king of lucis"作用域
4.ECMAScript中Array類型的迭代方法
a.every(function(item,index,array){}):對數組中的每一項運行給定函數,若是函數對每一項都返回true,則返回true。
b.some(function(item,index,array){}):對數組中的每一項運行給定函數,若是該函數對任一項返回true,則返回true.
c.filter(function(item,index,array){}):對數組中的每一項運行給定函數,返回該函數返回true的項組成的數組.
d.forEach(function(item,index,array){}):對數組中的每一項運行給定的函數。該方法沒有返回值
e.map(function(item,index,array){}):對數組中的每一項運行給定函數,返回每次函數調用的結果組成的數組.it