2

Javascript のシーケンス式内でローカル変数を宣言する方法があるかどうか知りたいです。変数を別のステートメントとしてではなく、シーケンス式の一部として宣言したいと考えています。
たとえば、私はこのようなことをしたい
temp = "1", var a, ++i;
助けてくれてありがとう!

編集 - Javascript を計測しようとしています (潜在的な DOM ベースの XSS を見つけるため)。上記のコードは、実際のプログラムのほんの一部です。たとえば、 if (a === 2) {a = 1} else {a = 3} is convert to a === 2? のような三項演算子を使用して if ステートメントを式に変換する方法を見つけました。= 1: = 3; var a = 2 を式に変換して、シーケンス式に追加できるかどうかを知りたかったのですが、
なぜこれをすべて行っているのか-JSプログラムの代入ステートメントを一連のステートメントに置き換えています私の。1 つのステートメントの代わりに複数のステートメントを追加すると、残りのコードが台無しになります。したがって、これを回避するためにシーケンス式を使用しています。
たとえば、for (var i = 0; i < 2; i++) {} のような for ループでは、i =0 をセミコロンで区切られた一連のステートメントに置き換えることはできません。したがって、シーケンス演算子を使用して複数のステートメントを追加しようとしています

4

5 に答える 5

1

var実際、宣言とセミカラムが続くキーワードで始める必要があります。その後、シーケンスを開始できます。

本当に気に入らない場合、または (何らかの理由で) セミカラムを使用したくない場合は、無名関数を作成して、引数をローカル変数として使用することができます。

(function(temp, a, i){ i=a, i++ })("1", 1)

したがって、for ループでは、次のようなことができます。

for (var i=function(){ /* any statement you want */; return 0 }(); i<10; i++) { /* ... */ }

それが役立つことを願っています。

于 2013-06-25T06:43:27.150 に答える
1

多分あなたはこれを意味しますか?

var temp="1",a,i=i+1;

構文上、「var」を他の方法で使用することはできないと思います。

于 2013-06-25T06:20:12.113 に答える