JavaScript中函数详解
2022/6/30 14:20:04
本文主要是介绍JavaScript中函数详解,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
前言
函数实际上是对象,每个函数都是Function类型的实列,和其他引用类型一样Function也有属性和方法
箭头函数
ECMAScript 6新增了使用胖箭头(=>)语法定义函数表达式的能力
let arrowSum = (a, b)=>{ return a+b; }; let functionExpressionSum= function(a, b) { return a + b; }; console.log(arrowSum(0,8)); //8 console.log(functionExpressionSum(100, 100)) //200
如果只有一个参数,那也可以不用括号。只有没有参数,或者多个参数的情况下,才需要使用括号
// 两种写法都有效 let double = (x) => {return 2 * x;}; let triple =x=> {return 3 * x;}; // 无参数需要括号 let getRandom = ()=>{return Math.random();}; // 多参数需要括号 let sum = (a, b) => {return a+b;}; // 无效的写法 let multiply = a, b => {return a * b;}; // 报错
函数名
因为函数名就是指向函数的指针,所以它们跟其他包含对象指针的变量具有相同的行为。一个函数可以有多个名称
function sum(num1, num2){ return num1 + num2; } console.log(sum(100,100)); //200 let anotherSum = sum; console.log(anotherSum(100,100));//200 sum = null; console.log(anotherSum(100, 100)); //200
使用不带括号的函数名会访问函数指针,而不会执行函数。此时,anotherSum和sum都指向同一个函数。调用anotherSum()也可以返回结果。把sum设置为null之后,就切断了它与函数之间的关联。而anotherSum()还是可以照常调用
ECMAScript 6的所有函数对象都会暴露一个只读的name属性,其中包含关于函数的信息。多数情况下,这个属性中保存的就是一个函数标识符,或者说是一个字符串化的变量名。即使函数没有名称,也会如实显示成空字符串。如果它是使用Function构造函数创建的,则会标识成"anonymous"
function foo(){}; let bar = function(){}; let baz = () =>{}; console.log(foo.name); //foo console.log(bar.name); //bar console.log(baz.name); //baz console.log((()=>{}).name) //(空字符串) console.log((new Function()).name) //anonymous
参数
ECMAScript函数的参数跟大多数其他语言不同。ECMAScript函数既不关心传入的参数个数,也不关心这些参数的数据类型。定义函数时要接收两个参数,并不意味着调用时就传两个参数。你可以传一个、三个,甚至一个也不传,解释器都不会报错
ECMAScript函数的参数在内部表现为一个数组。函数被调用时总会接收一个数组,但函数并不关心这个数组中包含什么
arguments对象是一个类数组对象(但不是Array的实例),因此可以使用中括号语法访问其中的元素(第一个参数是arguments[0],第二个参数是arguments[1])。而要确定传进来多少个参数,可以访问arguments.length属性
function sayHi(name, message){ console.log("hello" + name + "," +message); }
可以通过arguments[0]取得相同的参数值。因此,把函数重写成不声明参数也可以
function sayHi(name, message){ console.log("hello" + arguments[0] + "," +arguments[1]); }
在重写后的代码中,没有命名参数。name和message参数都不见了,但函数照样可以调用。这就表明,ECMAScript函数的参数只是为了方便才写出来的,并不是必须写出来的。与其他语言不同,在ECMAScript中的命名参数不会创建让之后的调用必须匹配的函数签名。这是因为根本不存在验证命名参数的机制
通过arguments对象的length属性检查传入的参数个数
function howManyArgs(){ console.log(arguments.length); } howManyArgs("string", 100) //2 howManyArgs(); //0 howManyArgs(12) //1
这篇关于JavaScript中函数详解的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-23Springboot应用的多环境打包入门
- 2024-11-23Springboot应用的生产发布入门教程
- 2024-11-23Python编程入门指南
- 2024-11-23Java创业入门:从零开始的编程之旅
- 2024-11-23Java创业入门:新手必读的Java编程与创业指南
- 2024-11-23Java对接阿里云智能语音服务入门详解
- 2024-11-23Java对接阿里云智能语音服务入门教程
- 2024-11-23JAVA对接阿里云智能语音服务入门教程
- 2024-11-23Java副业入门:初学者的简单教程
- 2024-11-23JAVA副业入门:初学者的实战指南