Utt*_*tta 289 javascript
我可以声明默认参数吗?
function myFunc( a, b=0)
{
// b is my optional parameter
}
Run Code Online (Sandbox Code Playgroud)
在javascript中.
Tig*_*ine 520
使用ES6:现在这是语言的一部分:
function myFunc(a, b = 0) {
// function body
}
Run Code Online (Sandbox Code Playgroud)
请记住,ES6会检查值undefined而不是针对truthy-ness(因此只有真正的未定义值才能获得默认值 - 像null这样的虚假值不会默认值).
使用ES5:
function myFunc(a,b) {
b = b || 0;
// b will be set either to b or to 0.
}
Run Code Online (Sandbox Code Playgroud)
只要您明确传入的所有值都是真实的,这就可以正常工作.根据MiniGod的评论,这些值并非真实的:null, undefined, 0, false, ''
在函数实际启动之前,看到JavaScript库对可选输入进行一系列检查是很常见的.
Ja͢*_*͢ck 86
使用ES6,这可能完全按照您描述的方式进行; 详细说明可在文档中找到.
JavaScript中的默认参数主要有两种实现方式:
function myfunc(a, b)
{
// use this if you specifically want to know if b was passed
if (b === undefined) {
// b was not passed
}
// use this if you know that a truthy value comparison will be enough
if (b) {
// b was passed and has truthy value
} else {
// b was not passed or has falsy value
}
// use this to set b to a default value (using truthy comparison)
b = b || "default value";
}
Run Code Online (Sandbox Code Playgroud)
表达式b || "default value"计算值和存在,b并返回"default value"if b不存在或者为falsy的值.
替代声明:
function myfunc(a)
{
var b;
// use this to determine whether b was passed or not
if (arguments.length == 1) {
// b was not passed
} else {
b = arguments[1]; // take second argument
}
}
Run Code Online (Sandbox Code Playgroud)
arguments函数内部提供特殊的"数组" ; 它包含所有参数,从索引0到N - 1(其中N传递的参数数量).
这通常用于支持未知数量的可选参数(相同类型); 但是,说明预期的参数是首选!
虽然undefined是不可写,因为ES5,一些浏览器被称为不执行此.如果您担心这个问题,可以使用两种方法:
b === void 0;
typeof b === 'undefined'; // also works for undeclared variables
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
388006 次 |
| 最近记录: |