1.函数
1.1 绝对值函数(举例)
定义方法一:
function abs(x){
if(x>=0)
return x;
else
return -x;
}
一旦执行到return代表函数的结束,返回结果!
如果没有执行return,函数也会返回一个结果,就是undefined
定义方法二:
var abs=function(x){
if(x>=0)
return x;
else
return -x;
}
1.2 参数arguments、rest
- arguments:JS免费赠送的参数,是一个数组,返回全部参数
function abs(x){
for(var i=0;i<arguments.length;i++)
console.log(arguments[i]);
if(x>=0)
return x;
else
return -x;
}
- rest:获取除了已定义的参数之外的全部参数 (...rest)
function abs(a,b,...rest){
console.log(rest);
}
2.变量的作用域
在JavaScript中,变量也分为局部变量和全局变量。如果一个方法A里面嵌套了另一个方法B,那么方法B中可以引用方法A的变量,但是方法A不能引用方法B的变量(跟java中的内部类差不多)。
- 问题一:如果两个函数使用用了相同的变量名,也不会冲突
function abs(){ var x=1; x=x+1; console.log(x);//输出2 } function ab(){ var x='sun’; x=x+1; console.log(x);//输出sun1 }
ps:在控制台需要输入方法才会显示结果(example:abs())
-
问题二:如果外部函数与内部函数变量重名,内部函数先在本身作用域中寻找变量,若没有就使用同名的外部变量
2.1 全局对象 window
- 所有浏览器都支持 window 对象。它代表浏览器的窗口。
- 所有全局 JavaScript 对象,函数和变量自动成为 window 对象的成员。
- 全局变量是 window 对象的属性。
- 全局函数是 window 对象的方法。
弹出了两个框
2.2 由于我们所有的全局变量全都绑定在了window上,如果是团队开发,是很不利于的,有了变量冲突。
那么如何减少这样的冲突呢?
我们可以把自己的代码全部放入自己定义的唯一空间名字中,较少全局命名的冲突。
2.3 之前也提到过let关键字。它能够解决局部作用域冲突的问题
假如在一个for循环中,用var关键字来定义i,那么出了此循环,i还能够起作用,这就很不严谨,但是用let关键字定义i就不会出现此问题了。
2.4 const常量关键字
用const来定义一个常量,之后这个常量就不允许修改了。
3.方法
两种调用方式,如图:
在方法二中也可以改成 return now-tu.year;