JavaScript 函数也可以使用表达式来定义。
函数表达式可以在变量中存储:
var x = function (a, b) {return a * b};
2.Function() 构造器
函数也可以通过名为 Function() 的内建 JavaScript 函数构造器来定义。
var myFunction = new Function(“a”, “b”, “return a * b”);
var x = myFunction(4, 3);
也可以不用
var myFunction = function (a, b) {return a * b};
var x = myFunction(4, 3);
3.函数提升
Hoisting 应用于变量声明和函数声明。
正因如此,JavaScript 函数能够在声明之前被调用
myFunction(5);
function myFunction(y) {
return y * y;
}
但是使用表达式定义的函数不会被提升。
3. 自调用函数
函数表达式可以作为“自调用”。
自调用表达式是自动被调用(开始)的,在不进行调用的情况下。
函数表达式会自动执行,假如表达式后面跟着 ()。
(function () {
var x = “Hello!!”; //我会调用我自己
})();
4.函数可用作值
JavaScript 函数可被用作值,JavaScript 函数可用在表达式中
function myFunction(a, b) {
return a * b;
}
var x = myFunction(4, 3) * 2;
5.函数是对象
JavaScript 中的 typeof 运算符会为函数返回 “function”。
JavaScript 函数都有属性和方法。
(1)arguments.length 会返回函数被调用时收到的参数数目:
function myFunction(a, b) {
return arguments.length;
}
(2)toString() 方法以字符串返回函数:
function myFunction(a, b) {
return a * b;
}
var txt = myFunction.toString();
//function myFunction(a, b) { return a * b; }
6.为创建新对象而设计的函数,被称为对象构造函数(对象构造器)
7. 箭头函数(es6)
箭头函数允许使用简短的语法来编写函数表达式。
您不需要 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) => {
var a=2;
return (xa)+(ya);
};
document.getElementById(“demo”).innerHTML = x(1, 5);//26
IE11 或更早的版本不支持箭头函数。
(二)函数参数
1.函数参数定义
functionName(parameter1, parameter2, parameter3) {
要执行的代码
}
函数参数(parameter)指的是在函数定义中列出的名称。
函数参数(argument)指的是传递到函数或由函数接收到的真实值。
2. 参数规则:无类型、无数量
JavaScript 函数定义不会为参数(parameter)规定数据类型。
JavaScript 函数不会对所传递的参数(argument)实行类型检查。
JavaScript 函数不会检查所接收参数(argument)的数量。
3. 如果调用参数时省略了参数(少于被声明的数量),则丢失的值被设置为:undefined。
4. 如果函数调用的参数太多(超过声明),则可以使用 arguments 对象(数组)来达到这些参数。
x = sumAll(1, 123, 500, 115, 44, 88);
function sumAll() {//求合函数
var i, sum = 0;
for (i = 0; i < arguments.length; i++) {
sum += arguments[i];
}
return sum;
}
5.参数传值,对象传址
JavaScript 参数通过值传递:函数只知道值,而不是参数的位置。
如果函数改变了参数的值,它不会改变参数的原始值。
在 JavaScript 中,对象引用是值。
正因如此,对象的行为就像它们通过引用来传递:
如果函数改变了对象属性,它也改变了原始值。
(三)函数调用
1.在函数被定义时,函数内部的代码不会执行。在函数被调用时,函数内部的代码会被执行。
2.函数形式调用
function myFunction(a, b) {
return a * b;
}
myFunction(10, 2); // 将返回 20
2.作为方法调用
var myObject = {
firstName:“Bill”,
lastName: “Gates”,
fullName: function () {
return this.firstName + " " + this.lastName;
}
}
myObject.fullName(); // 将返回 “Bill Gates”
3.函数构造器调用
如果函数调用的前面是 new 关键字,那么这是一个构造函数调用。
// 这是函数构造器:
function myFunction(arg1, arg2) {
this.firstName = arg1;
this.lastName = arg2;
}
// 创建了一个新对象:
var x = new myFunction(“Bill”, “Gates”);
x.firstName; // 会返回 “Bill”
(四)函数Call、Apply方法重用
1.call() 方法,您可以编写能够在不同对象上使用的方法。
call() 方法是预定义的 JavaScript 方法。它可以用来调用所有者对象作为参数的方法。通过 call(),您能够使用属于另一个对象的方法。
var person = {
fullName: function(city, country) {
小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数初中级前端工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年Web前端开发全套学习资料》送给大家,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频
如果你觉得这些内容对你有帮助,可以添加下面V无偿领取!(备注:前端)
易碰到天花板技术停滞不前!**
因此收集整理了一份《2024年Web前端开发全套学习资料》送给大家,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
[外链图片转存中…(img-SJDtK0af-1710883098827)]
[外链图片转存中…(img-YxUTFGom-1710883098828)]
[外链图片转存中…(img-VvKjC2Kb-1710883098829)]
[外链图片转存中…(img-OPokzk6k-1710883098829)]
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频
如果你觉得这些内容对你有帮助,可以添加下面V无偿领取!(备注:前端)
[外链图片转存中…(img-qJu1bSBt-1710883098830)]