Javascript Websocket将代码传递给Eval
我有一个javascript对象,作为原始文本通过websocket传递给客户端。这个原始文本(目前)在收到时直接传递到eval语句中。问题是,出于某种原因,Javascript在将数据传递给事件处理程序之前一直在操作数据。我束手无策 通过websocket传递的对象是:Javascript Websocket将代码传递给Eval,javascript,websocket,Javascript,Websocket,我有一个javascript对象,作为原始文本通过websocket传递给客户端。这个原始文本(目前)在收到时直接传递到eval语句中。问题是,出于某种原因,Javascript在将数据传递给事件处理程序之前一直在操作数据。我束手无策 通过websocket传递的对象是: var obj = { evaluate:function(str) { digit = parseInt(str,10); if(isNaN(digit)) {
var obj = {
evaluate:function(str) {
digit = parseInt(str,10);
if(isNaN(digit)) {
log.write("Invalid input: "+str);
} else {
log.write(this.spigot(digit));
}
},
spigot:function(digit) {
len = Math.floor(10*digit/3)+1;
A = new Array(len);
for(var i=0;i<len;i++) A[i]=2;
var finalDigit = 0;
var nines = 0;
var predigit = 0;
for(i=1;i<digit+1;i++) {
q = 0;
for(j=len;j>0;j--) {
x = 10*A[j-1] + q*j;
x = Math.floor(x)
A[j-1] = x % ((2*j)-1);
A[j-1] = Math.floor(A[j-1]);
q = x / ((2*j) -1);
q = Math.floor(q);
}
A[0] = Math.floor(q%10);
q = Math.floor(q/10);
if(q==9) {
nines++;
} else if (q==10) {
finalDigit = predigit+1;
for(j=0;j<nines;j++) {
finalDigit = 0;
}
predigit=0;
nines=0;
} else {
finalDigit = predigit;
predigit=q;
for(j=0;j<nines;j++) {
finalDigit = 9;
}
nines=0;
}
}
return finalDigit;
}
}
e、 数据包括:
obj = {
evaluate:function(str) {
digit = parseInt(str,10);
if(isNaN(digit)) {
log.write('Invalid input: '+str);
} else {
log.write(this.spigot(digit));
}
},
spigot:function(digit) {
len = Math.floor(10*digit/3)+1;
A = new Array(len);
for(var i=0;i<len;i++) A[i]=2;
var finalDigit = 0;
var nines = 0;
var predigit = 0;
for(i=1;i<digit+1;i++) {
q = 0;
for(j=len;j>0;j--) {
x = 10*A[j-1] + q*j;
x = Math.floor(x)
A[j-1] = x %((MISSING)(2*j)-1);
A[j-1] = Math.floor(A[j-1]);
q = x / ((2*j) -1);
q = Math.floor(q);
}
A[0] = Math.floor(q%)(MISSING);
q = Math.floor(q/10);
if(q==9) {
nines++;
} else if (q==10) {
finalDigit = predigit+1;
for(j=0;j<nines;j++) {
finalDigit = 0;
}
predigit=0;
nines=0;
} else {
finalDigit = predigit;
predigit=q;
for(j=0;j<nines;j++) {
finalDigit = 9;
}
nines=0;
}
}
return finalDigit;
}
}
obj={
评估:功能(str){
数字=parseInt(str,10);
if(isNaN(数字)){
log.write('无效输入:'+str);
}否则{
log.write(这个.插口(数字));
}
},
插口:功能(数字){
len=数学楼层(10位/3)+1;
A=新阵列(len);
对于(var i=0;i而言,%
字符被Javascript解释为转义字符。您看到添加的(缺少)
文本是Javascript告诉您转义字符后面没有两位转义代码的方式。解决此问题的最简单方法是定义函数mod(a,b)
实现与模数相同的功能,即:
....},
mod:function(a,b) {
return (a/b-Math.floor(a/b))*b;
}
然后,当您需要使用模运算符时,只需调用
Math.floor(this.mod(q,10));
Math.floor(this.mod(q,10));