gpt4 book ai didi

Javascript - 具有可选参数作为对象的函数?

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:56:47 25 4
gpt4 key购买 nike

我需要一个函数,它的参数是一个对象,如果我将它留空,它将加载默认值。

类似于:

function loadMap(args) { //args is an object and its optional

//this is what I want to do, test args and load defauts if necesary
/*
pseudocode:
if args.latitude is not set then
give it a default value

if args.longitude is not set then
give it a default value

end pseudocode */

alert("Latitude is "+args.latitude );
alert("Longitude is "+args.longitude );
}

//outputs the default values
loadMap();

//outputs custom values
loadMap({latitude: "x.xxxx", longitude: "-x.xxxx"});

//and should work too and output one default and one custom value
loadMap({latitude: "x.xxxx"});

我在这个问题 (Is there a better way to do optional function parameters in Javascript?) 中找到了这个解决方案,但它需要 jQuery: http://jsfiddle.net/xy84kwdv/

这几乎是我想要的,但我不想依赖于 jquery 函数。

最佳答案

这个问题肯定已经超过 3 年了(2018-03-02)。我搜索了这个主题,但我得到的大部分问题和排名靠前的答案似乎已经过时,比如 this , this , this , 或 this .

目前,lots of browsers支持ES6/ECMAScript 2015 (ECMAScript 第 6 版)。为了兼容性,您可以使用 WebpackJs (或另一个包装机)和 BabelJs (或其他编译器)将 ES6 代码编译并打包为 ES5。这个问题的 ES6 版本答案可能是 Object Destructuring .

function drawES2015Chart({size = 'big', cords = {x: 0, y: 0}, radius = 25} = {}) {
console.log(size, cords, radius);
// do some chart drawing
}

drawES2015Chart({cords: {x: 18, y: 30}, radius: 30});

function fn(requiredArg, {optionalArg = 'Default Value', a = 1, b ={some: 'object'}} = {}){
// Do with destructured values: requiredArg, optionalArg, a, and b.
console.log(requiredArg, optionalArg, a, b);
}

所以对于你的问题,它将是:

function loadMap({latitude = "x.xxxx", longitude = "-x.xxxx"} = {}) {
console.log('latitude is:', latitude, 'and longitude is:', longitude);
console.log(`latitude is: ${latitude}, and longitude is: ${longitude}`);
}

// Call the function.
loadMap({latitude: "1.2345", longitude: "-6.7890"});

关于Javascript - 具有可选参数作为对象的函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27735855/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com