アプリ版:「スタンプのみでお礼する」機能のリリースについて

下記のような変数が大量にあります。
変数内容は、全て'変数名'の文字列です。
var AAAAAAAQWE = 'AAAAAAAQWE', BACDCFRF = 'BACDCFRF', VZAAAWW = 'VZAAAWW',……

・変数宣言を短く書き直したいのですが、何か良い方法はあるでしょうか?
・何度も同じことを書くのは非効率な気がするのですが…

A 回答 (4件)

thisは基本的にはスコープチェーンに入っていないので


thisのプロパティに設定しても
this.AAAAAAAQWEとしないと参照できないですね。
(thisがグローバルオブジェクトの場合は、参照可能になります。)

withを使えばオブジェクト名を省略して
プロパティを参照できるようになります。

var array = ['AAAAAAAQWE','BACDCFRF','VZAAAWW'];
var obj = {};
for(var i=0; i<array.length; i++) obj[array[i]] = array[i];
with(obj){
 alert(AAAAAAAQWE); //withの中では、obj. を省略できる
}


withは非推奨なのであまり使いたくないですけどね。



> ・既存コード調整なので、存在意義はとりあえずおいといていただけると有難いです
変数を全部文字列に置換するような調整はできないのでしょうか?
(AAAAAAAQWE → 'AAAAAAAQWE' みたいに置換すれば、変数宣言自体不要。)
    • good
    • 0
この回答へのお礼

回答ありがとうございました。

>thisは基本的にはスコープチェーンに入っていない
・解説ありがとうございました
・3さんのコード、どうして動作しないのか疑問に思っていました

>withの中では、obj. を省略できる
・withとか初めて見ました
・こういうのを知りたかったです

>withは非推奨
・これは使えそうだと思ったのですが、自分でも確認してみたら「ECMAScript 5 の strict mode では禁止」と書いてありました……。残念です

>変数を全部文字列に置換するような調整
・再度検討してみたいと思いますー

お礼日時:2014/11/04 23:49

先に配列に格納し、その後にループで指定することもできます。



var array = ['AAAAAAAQWE','BACDCFRF','VZAAAWW'];
for(var i in array) var this[array[i]] = array[i];
alert(AAAAAAAQWE);


ただ、やってることはまどろっこしいので、通常はそういう事態に陥らないように、仕様の方を変更したほうが早い場合が多いと思います。

この回答への補足

回答ありがとうございました。

・試すと「Uncaught SyntaxError: Unexpected token this」になります……

補足日時:2014/11/04 23:40
    • good
    • 0

そのような変数自体に存在意義が無い気がするのですが、


どのような使われ方を想定している変数なのでしょうか?

この回答への補足

返信ありがとうございました。
・既存コード調整なので、存在意義はとりあえずおいといていただけると有難いです
・変数名を文字列で返すような方法ってないでしょうか?

補足日時:2014/11/02 21:48
    • good
    • 0

変数内容を短くしたいのですね。



 テキストエディタの一括置換機能を利用すれば、AAAAA→A5 のように一度に変数名は変えられます。複数の一括置換ができればベターですね。
 ご参考まで。

この回答への補足

回答ありがとうございました。
・変数名の長さではなく、変数宣言する書き方でどうにかならないかなと思い、質問しました

補足日時:2014/11/02 21:33
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!