人気ブログランキング | 話題のタグを見る

javaScript の略記法

JavaScript でプログラミングすると、ほかの言語よりタイポによるバグの発生が多いような気がする。しかし、新言語をつくるより、JavaScript の予約語の一部を略記できるようになったらタイポによるバグは減少するような気がする。

1.まず頻繁に使う予約語でタイポを起こしやすいものの筆頭は function だ。これは CoffeeScript の解決法が一番だ。ラムダ記法を利用するのだ。つまり

function foo (x) { ... } は foo (x) -> { ... } にする。
foo = function (x) { ... } は foo = (x) -> { ... } にする。
無名関数は (x) -> { ... } にする。

2.var 宣言をやめて関数のなかの変数は全て局所変数とする。スコープの中から外の変数を参照するときだけ outer 宣言をする。

var a = "hello"; function () { var b = "world"; return a + b }; は、
a = "hello"; funciton () { outer a; b = "world"; return a + b }; にする。

3. 文末の ; を廃止して、文の区切りは改行にする。行を続けたいときは明示的に \ を行末に置く。

a = "hello";
b = "world";



a = "hello"
b = "world"

とする。また、行を折り返すときは、

a = "hello" + \
"world"

とする。

4. Array.prototype.map 関数を多用する。map 関数を使うと配列の処理に不要な for ループや index を使わずに済む。

[1,2,3].map(function(x) { return x*x });

これも次のように書けると嬉しい。

[1,2,3].map((x) -> {x*x});

5. 整数の配列を範囲指定で定義できるようにする。

[1..3] => [1,2,3]


6. オブジェクトのメソッドはオブジェクトを返すようにすると次の例のようにドット記法の連鎖が可能になる。

[4,1,5].sort().reverse();

例えば次のようになる。

function MyClass(name, age) {
    this.name = name;
    this.age = age;
}
MyClass.prototype = {
    getage: function (age) {this.age = age; return this},
    show: function() {return this.name + " " + this.age}
}
a = new MyClass("Tom", 30);
b = a.getage(40).show();
d_ocument.write(b);

7. 比較的大きいライブラリの場合は全体を無名関数でくるんで、オブジェクトを返すようにすると本体の名前空間を汚さないので、使いまわしがきく。

library = (function () { ... ; return obj; })();
library.anyMethod();
...

このように、新しい言語を作らなくても、予約語の略記法を定めるだけで、JavaScript はずいぶん使い勝手がよくなるような気がする。

もっとも、現状では CoffeeScript を利用すればいいだけの話だが。


by tnomura9 | 2016-01-25 08:01 | JavaScript | Comments(0)
<< JavaScript の高階関数 JavaScript をカッコ... >>