Javascript基礎(2)
阿新 • • 發佈:2021-07-12
Javascript基礎(2)
1、函式
JavaScript中的函式使用起來非常隨意
在進行引數傳遞時,引數少了,以及多了都不會進行報錯。
var abc=function (x){
if(typeof x!="number")
throw 'not a number';
if(x>=0){
return x;
}
else{
return -x;
}
}
2、arguments
arguments是js免費贈送的關鍵字,代表傳遞進來的所有引數,是一個數組。
var abc=function (x){ if(arguments.length>1) { console.log("x="+arguments[0]); for (let i=1;i<arguments.length;i++){ console.log(arguments[i]); } } if(typeof x!="number") throw 'not a number'; if(x>=0){ return x; } else{ return -x; } }
注意:arguments中包含所有的引數,我們有的時候想使用多個引數來進行附加操作時,需要排除已經有的引數
3、rest
ES6引入的新特性,獲取除了已定義的引數之外的所有引數
var xyz=function (a,b,...rest){
console.log(a);
console.log(b);
console.log(rest);
return;
}
4、變數的作用域
-
在函式內部使用var定義變數,變數的作用域在函式內,在函式外不可以使用
-
使用var定義在外部的變數就是在全域性變數上,alert(window.x);
-
js只有一個全域性作用域,就是在window下,任何(函式也可以是視為變數),都在window下
window.alert=function(){ } window.alert(123); //這的window.alert失效了 window.alert=old_alert; window.alert(456); //這裡又成功了
-
函式外部可以訪問內部的變數,內部不可以訪問外部的變數
function aaa(){ alert x=0; console.log(y);//可以 function bbb(){ alert y=0; console.log(x);//不可以 return; } return; }
-
js中的宣告變數都會被提前,但是賦值不會被提前
var x; ... ... var y=1; 等同於 var x; var y; ... ... y=1;
-
JavaScript實際上只有一個全域性作用域,任何變數(包括函式)都會先在函式作用域內尋找,尋找不到在到全域性,window下尋找
5、弊端
由於採用這樣的這樣的繫結全域性變數的方法,如果不同的全域性變數採用了不同的全域性變數方法,就會產生衝突,如何降低命名衝突的問題
var kuangsheng={};//定義一個全域性變數
kuangsheng.name="kuangshen";
kuangsheng.add=function(a,b){
return a+b;
}
把需要使用的全域性變數放到自己定義的唯一的名稱空間中,降低全域性命名儲存
6、區域性作用域
for(let i;i<100;i++){
}
//i出了for迴圈就不可以使用
7、常量const
ES6才提出
const PI='3.14';
//只讀
8、方法
方法就是把函式放在物件的內部,物件裡面只有兩個東西,屬性和方法
var kuangs={
name:'hejin',
birth:2000,
getAge:function(){
var now=new Date().getFullYear();
return now-this.birth;
}
}
方法一定要帶括號
9、JOSN
在JavaScript中一切物件都可以轉換為JOSN的型別:
物件都用:{}
陣列都用:[ ]
所有鍵值對都用Key:value
JavaScript和JOSN想互轉換
var jsonUser=JSON.stringify(user);
var obj=JOSN.parse('{"name":"qingjiang","age":3}');