09.01、js之函数定义-变量提升&自调用函数&箭头函数
作者:互联网
JavaScript 函数定义
1、函数声明
function functionName(parameters) {
要执行的代码
}
实例
function myFunction(a, b) {
return a * b;
}
- 分号用于分隔可执行的 JavaScript 语句
2、函数表达式
JavaScript 函数也可以使用表达式来定义。
函数表达式可以在变量中存储:
实例
var x = function (a, b) {return a * b};
在变量中保存函数表达式之后,此变量可用作函数:
实例
var x = function (a, b) {return a * b};
var z = x(4, 3); // 12
上面的函数实际上是一个匿名函数(没有名称的函数)。
存放在变量中的函数不需要函数名。他们总是使用变量名调用。
上面的函数使用分号结尾,因为它是可执行语句的一部分。
3、Function() 构造器
函数也可以通过名为 Function() 的内建 JavaScript 函数构造器来定义。
实例
var myFunction = new Function("a", "b", "return a * b");
var x = myFunction(4, 3); // 12
写法2-常用
var myFunction = function (a, b) {return a * b};
var x = myFunction(4, 3); // 12
- 大多数情况下,您可以避免在 JavaScript 中使用 new 关键词。
4、函数提升
Hoisting(提升) 是 JavaScript 将声明移动到当前作用域顶端的默认行为。
正因如此,JavaScript 函数能够在声明之前被调用:
myFunction(5);
function myFunction(y) {
return y * y;
}
- 使用表达式定义的函数不会被提升。
5、自调用函数
函数表达式会自动执行,假如表达式后面跟着 ()。
您无法对函数声明进行自调用。
您需要在函数周围添加括号,以指示它是一个函数表达式:
实例
var x = (function (x,y) {
return x * y;; //我会调用我自己
})(3,4); // 12
- 上面的函数实际上是一个匿名的自调用函数(没有名称的函数)。
6、函数可用作值
JavaScript 函数可被用作值:
实例
function myFunction(a, b) {
return a * b;
}
var x = myFunction(4, 3); // 12
JavaScript 函数可用在表达式中:
实例
function myFunction(a, b) {
return a * b;
}
var x = myFunction(4, 3) * 2; // 144
7、函数是对象
JavaScript 函数都有属性和方法。
arguments.length 会返回函数被调用时收到的参数数目:
var x = (function (x,y) {
z= x * y; // 12
return arguments.length; //我会调用我自己 // 2
})(3,4);
toString() 方法以字符串返回函数:
function myFunction(a, b) {
return a * b;
}
var txt = myFunction.toString();
// "function myFunction(a, b) {
// return a * b;
// }"
定义为对象属性的函数,被称为对象的方法。
为创建新对象而设计的函数,被称为对象构造函数(对象构造器)。
8、箭头函数
不需要 function 关键字、return 关键字和花括号。
实例
// ES5
var x = function(x, y) {
return x * y;
}
// ES6
const x = (x, y) => x * y;
-
没有自己的 this
-
未被提升,必须在使用前进行定义
-
使用 const 比使用 var 更安全,因为函数表达式始终是常量值。
注意:
如果函数是单个语句,则只能省略 return 关键字和大括号。因此,保留它们可能是一个好习惯:
实例
const x = (x, y) => { return x * y };
console.log(x(3,4)) // 12
- IE11 或更早的版本不支持箭头函数。
标签:myFunction,function,return,函数,JavaScript,调用函数,js,var 来源: https://blog.csdn.net/weixin_44867717/article/details/115396738