首页 > 语言 > JavaScript > 正文

深入理解JavaScript函数参数(推荐)

2024-05-06 14:54:19
字体:
来源:转载
供稿:网友

前面的话

  javascript函数的参数与大多数其他语言的函数的参数有所不同。函数不介意传递进来多少个参数,也不在乎传进来的参数是什么数据类型,甚至可以不传参数。

arguments

  javascript中的函数定义并未指定函数形参的类型,函数调用也未对传入的实参值做任何类型检查。实际上,javascript函数调用甚至不检查传入形参的个数

function add(x){return x+1;}console.log(add(1));//2console.log(add('1'));//'11'console.log(add());//NaNconsole.log(add(1,2));//2

同名形参

  在非严格模式下,函数中可以出现同名形参,且只能访问最后出现的该名称的形参

function add(x,x,x){return x;}console.log(add(1,2,3));//3

  而在严格模式下,出现同名形参会抛出语法错误

function add(x,x,x){'use strict';return x;}console.log(add(1,2,3));//SyntaxError: Duplicate parameter name not allowed in this context

参数个数

  当实参比函数声明指定的形参个数要少,剩下的形参都将设置为undefined值

function add(x,y){console.log(x,y);//1 undefined}add(1);

  常常使用逻辑或运算符给省略的参数设置一个合理的默认值

function add(x,y){y = y || 2;console.log(x,y);//1 2}add(1);

  [注意]实际上,使用y || 2是不严谨的,显式地设置假值(undefined、null、false、0、-0、''、NaN)也会得到相同的结果。所以应该根据实际场景进行合理设置

  当实参比形参个数要多时,剩下的实参没有办法直接获得,需要使用即将提到的arguments对象

  javascript中的参数在内部是用一个数组来表示的。函数接收到的始终都是这个数组,而不关心数组中包含哪些参数。在函数体内可以通过arguments对象来访问这个参数数组,从而获取传递给函数的每一个参数。arguments对象并不是Array的实例,它是一个类数组对象,可以使用方括号语法访问它的每一个元素

function add(x){console.log(arguments[0],arguments[1],arguments[2])//1 2 3return x+1;}add(1,2,3);

  arguments对象的length属性显示实参的个数,函数的length属性显示形参的个数

function add(x,y){console.log(arguments.length)//3return x+1;}add(1,2,3);console.log(add.length);//2

  形参只是提供便利,但不是必需的

function add(){return arguments[0] + arguments[1];}console.log(add(1,2));//3

对象参数

  当一个函数包含超过3个形参时,要记住调用函数中实参的正确顺序实在让人头疼

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

图片精选