首页 > 代码库 > Javascript进阶(6)---函数声明
Javascript进阶(6)---函数声明
-------------
- JS中的函数也是一种对象
- 函数的返回值是return来决定的,没有则返回undefined
1、函数声明法
- 2、函数表达式法
function add(a, b) { a = a + a; b = b + b;}
var add = function (a , b){ ......};
(function(){......}());
return function (){......}
var add =function foo(a,b){......}; //命名式函数表达式,存在兼容问题,并不常用
- 为什么函数声明的前面可以提前调用该函数?
- 因为函数声明在加载时是被预先处理的,而函数表达式中,只有函数里声明的变量会被预先处理。
add(5,4);var add =function foo(a,b){alert(a+b)};
- 而函数表达式本身并不会。所以,在函数表达式前调用该函数则会报错。
- (暂时没想到栗子)
3、Function 构造器
var func = new Function(‘a‘,‘b‘,‘console.log(a+b);‘)func(4,5);
- 为什么函数声明的前面可以提前调用该函数?
4、箭头函数
- 在ES 6 标准下新增加了一种函数:箭头函数
- 例如:
x => x*x //等价于function (x){ return x*x; }
- 箭头相当于省略了"function"、"{}"、"return"关键字样
- 在以下特殊情况需要有特殊的变化
- 参数不是一个的情况
(x,y)=> x + y ; //两个参数()=> 500; //无参数//可变参数的情况(x,y, ...rest) => { return x+y; }
- 返回的内容是对象的情况
x => { foo : x} //错误写法x => ({foo : x }) //正确写法
- 箭头函数完全修复了 this 关键字的指向问题,在箭头函数中,this总是指向词法作用域,也就是外层调用者箭头函数使用 apply 与 call 时候,因为其内部的 this 以固定指向此法作用域,则 call 与 apply 传入的第一个参数被忽略
var obj_arrow = { birth:1990, getAge:function(){ var b = this.birth; var fn = ()=>new Date().getFullYear()-this.birth; return fn(); }}console.log(obj_arrow.getAge()); //26 这里的this 直接指向obj
- 参数不是一个的情况
Javascript进阶(6)---函数声明
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。