web-dev-qa-db-ja.com

node.jsで名前付きパラメーターを使用する

Node.jsv4.3.1を使用しています

名前付きパラメーターは読みやすいので、関数の呼び出しに使用したいと思います。

Pythonでは、この方法で関数を呼び出すことができます。

info(spacing=15, width=46)

Node.jsで同じことをするにはどうすればよいですか?

私のjavascript関数は次のようになります。

function info(spacing, width)
{
   //implementation
{
10
user781486

標準のJavascriptの方法は、次のような「オプション」オブジェクトを渡すことです。

info({spacing:15, width:46});

コードで使用される

function info(options) {
    var spacing = options.spacing || 0;
    var width = options.width || "50%";
    ...
}

オブジェクトにキーがないため、「偽」のundefinedが返されます。

「偽の」値を渡すと、この種のコードで問題が発生する可能性があることに注意してください...したがって、これが必要な場合は、次のようなより高度なコードを作成する必要があります。

var width = options.hasOwnProperty("width") ? options.width : "50%";

または

var width = "width" in options ? options.width : "50%";

継承されたオプションをサポートするかどうかによって異なります。

Javascriptのすべての「標準」オブジェクトはconstructorプロパティを継承するため、オプションにそのように名前を付けないように注意してください。

13
6502

ES6の方が簡単です。 nodejs> 6.5はこれらの機能をサポートしています。

このリンクをチェックする必要があります:

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Destructuring_assignment

使用したい正確な使用法が実装されています。しかし、私はそれをお勧めしません。

以下のコード(上記のリンクから取得)は、パラメーターを書き込む順序を覚えておく必要がないため、より適切な方法です。

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

この関数は、次のようにして使用できます。

const cords = { x: 5, y: 30 }
drawES6Chart({ size: 'small', cords: cords })

このようにして、関数がより理解しやすくなり、サイズ、コード、半径という名前の変数があるとさらに良くなります。次に、オブジェクトの省略形を使用してこれを行うことができます。

// define vars here
drawES6Chart({ cords, size, radius })

順序は関係ありません。

11
Utku Turunç