函数
函数
-
定义方式,以绝对值函数为例
一旦执行到return,代表函数结束,返回结果;如果没有执行return,函数执行完也会返回结果undefined
//第一种 function abs(x){ if(x>=0){ return x; }else{ return -x; } } //第二种,匿名函数,可以把结果赋值给abs,通过abs就可以调用函数 var abd = function(x){ if(x>=0){ return x; }else{ return -x; } } -
参数问题:JavaScript可以传任意个参数,也可以不传参数
-
假设不存在参数,如何规避
var abd = function(x){ //手动抛出异常来判断 if(typeof x!== 'number'){ throw 'Not a Number' } if(x>=0){ return x; }else{ return -x; } } -
多个参数的问题
arguments是一个JavaScript免费赠送的关键字,代表传递进来的所有参数,是一个数组
var abd = function(x){ console.log("x=>"+x); for(var i = 0;i < arguments.length;i++){ console.log(arguments[i]); } //判断默认第一个参数 if(x>=0){ return x; }else{ return -x; } } //x=>1 1 25 8522 1 rest:arguments包含所有的参数,我们有时候想使用多余的参数来进行附加操作,排除已有的参数
function aaa(a,b,...rest){ console.log("a=>"+a); console.log("b=>"+b); console.log(rest); } //aaa(22,31,2222,1) a=>22 b=>31 (2) [2222, 1] -
变量的作用域
-
在JavaScript中,var定义变量是有作用域的。
- 假设在函数体中声明,则在函数体外不可使用(闭包可实现)
- 如果两个函数使用了相同的变量名,只要在函数内部,就不冲突
- 内部函数可以访问外部函数的成员,反之则不行
- 函数查找变量是从自身函数开始,由内向外查找,即采用就近原则
- 默认规范:所有变量定义都放在函数头部,便于代码维护。
-
全局对象window,默认所有全局变量都会自动绑定在window对象下,alert()函数本身也是一个window变量
var x=10; alert(x); alert(window.x); var old_alert = window.alert; //old_alert(x)也可以弹出 window.alert = function(){}; //此时alert()失效了 window.alert = old_alert; //恢复 -
全局变量:由于所有的全局变量都会绑定在window上,如果不同的js文件,使用了相同的全局变量,如何减少冲突?把自己代码全部放入自己定义的为一空间名字中,降低全局命名冲突的问题
//唯一全局变量 var jsApp = {}; //定义全局变量 jsApp.name = 'zhangshan'; jsApp.add = function(a,b){ return a + b; } -
局部作用域let:解决局部作用域冲突的问题,推荐使用。
-
常量const:值不可变
-
-

浙公网安备 33010602011771号