Javascript基础(2)
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}');


浙公网安备 33010602011771号