我想知道是否有一种方法可以在 Javascript 的序列表达式中声明局部变量。我想将变量声明为序列表达式的一部分,而不是单独的语句。
例如,我想做这样的事情
temp = "1", var a,++i;
感谢您的帮助!
编辑 -
我正在尝试检测 Javascript(以找出潜在的基于 DOM 的 XSS),上面的代码只是实际程序的一个片段。例如,我找到了一种使用三元运算符将 if 语句转换为表达式的方法,如 if (a === 2) {a = 1} else {a = 3} is converted to a === 2?一 = 1: 一 = 3;我想知道 var a = 2 是否也可以转换为表达式,以便将其添加到序列表达式中
至于我为什么要做这一切——我正在用我自己的一组语句替换 JS 程序中的赋值语句。如果我添加多个语句来代替一个语句,它会扰乱其余代码。因此我使用序列表达式来解决这个问题。
例如,在 for (var i = 0; i < 2; i++) {} 这样的 for 循环中,我不能用一堆分号分隔的语句替换 i =0。因此,我正在尝试使用序列运算符添加多个语句
最佳答案
确实,您必须以 var
关键字开始,后跟声明和半列。然后你就可以开始你的序列了。
如果您真的不喜欢它或不想使用半列(无论出于何种原因),您可以尝试制作匿名函数并将参数用作局部变量:
(function(temp, a, i){ i=a, i++ })("1", 1)
所以在 for 循环中你可以做类似的事情:
for (var i=function(){ /* any statement you want */; return 0 }(); i<10; i++) { /* ... */ }
希望对您有所帮助。
关于javascript - 在 javascript 序列表达式中声明变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17290240/