4
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Unity 2022.2 以降の .jslib で使用できる ES6+ 構文の調査

Posted at

Unity 2022.2 から emscripten が 3.1.8 にバージョンアップしてるので、 どれだけ .jslib の関数内 で使用できる ES6+ 構文があるのか思いつく範囲で簡単に調べてみた。
大抵のものは使用できるようになったけど、一部まだ使えなかった。
(もしかすると、.jslib 関数以外で使えない場面もあるかもしれないが今回はそこまで深く調べてない)

使用しても問題ない ES6+ 構文

説明 例文
🟢 テンプレートリテラル (Template Literals) (複数行も可) let a = '123';
let b = `\${a}, \${a}`;
let c = `aaa
bbb`;
🟢 アロー関数 (Arrow Functions) const a = () => console.log('hoge');
🟢 短いオブジェクトのメンバー関数定義構文 const a = {
    hoge(){}
};
🟢 変数宣言での let / const ステートメント let a;
const b = 'hoge';
🟢 分割代入 (Destructuring assignments) let [a, b] = [1, 2];
let {a, b} = {a:1,b:2};
🟢 for of ループ for(let [i, v] of [1,2,3].entries()){
    console.log(i, v);
}
🟢 配列でのスプレッド構文 let a = [1, 2, 3];
let b = [...a, 4, 5, 6];
🟢 クラス (Class) class Hoge { }
let Hoge = class { }
🟢 クラス プロパティ getter / setter class Hoge {
    get fuga(){
        return this._fuga;
    }
    set fuga(val){
        this._fuga = val;
    }
}
🟢 派生クラス (Extended class) class Fuga extends Hoge { }
🟢 残余引数 (Rest parameters) const a = (a, b, ...c) => console.log(a, b, c);
a(1,2,3,4);
🟢 jslib メンバー関数定義で 残余引数 (Rest parameters) mergeInto(LibraryManager.library, {
    hoge: function(a, b, ...c){
        console.log(a,b,c);
    }
});
🟢 スプレッド構文での引数渡し Math.min(...[33,22,44]);
🟢 名前付き引数 const a = ({b, c, d}) => {
    console.log(b, c, d);
};
a({b:1, c:2, d:3});
🟢 デフォルト引数 (Default parameters) const a = (a, b, c = 'hoge');
a('a','b');
🟢 デフォルト引数 (Default parameters) を jslib のメンバー関数定義で使用 mergeInto(LibraryManager.library, {
    hoge: function(a, b, c = 'hoge'){
        console.log(a,b,c);
    }
});

使用したらエラーになる ES6+ 構文

コンパイルエラー 実行時フリーズ コンパイルすると消える 説明
jslib のメンバー関数定義にアロー関数を使用 mergeInto(LibraryManager.library, {
    hoge: () => {}
});
短いオブジェクトのメンバー関数定義構文を jslib のメンバーで使用 mergeInto(LibraryManager.library, {
    hoge(){}
});
オブジェクトでのスプレッド構文 let a = {a:1,b:2,c:3};
let b = {...a,d:4,e:5,f:6};
クラスのフィールドメンバー定義 class Hoge{
    fuga;
}
クラスのプライベート関数提議 class Hoge{
    #fuga(){}
}
オブジェクトの動的プロパティ (Dynamic properties) let a = 'hoge';
const b = {
    [a]:'fuga'
};
クラスをこういった場所で定義 const lib = {};
class Hoge{}
mergeInto(LibraryManager.library, lib});
4
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?