如题
         var s = ' 6 + - 1';
try{
var t = eval(s);
alert(t);
}catch(e){
alert(e);
}能够算出来结果为 5 
 怎么解释。

解决方案 »

  1.   

    很简单,因为eval可以执行js代码,只要将可执行的字符串类型的js代码发到eval中,那么eval就会执行这个字符串类型的js代码
    而 6+ -1就想上面说的6+(-1),因为正负号(+/-)优先级别高于加减,所以等于5
      

  2.   

    LZ说的测试出来了...我是问的LZ,为啥我这么写运行错误
      

  3.   

    不好意思 今天才来回复
     “6---1,6+++1我报错呢....”
    能够运行吧 可能是写法不同
     我是这样写的var s =  6 + + + 1;
    var ss =  '6 + + + 1';
    alert('s='+s);
    alert(eval(ss));
    这样能够运行 都是 7我这里为了方便说清楚问题 把本来是变量的字段换成了 数值
    后来这个问题我确实没办法解决 就用了一个比较笨的办法
    判断  变量出现的个数 和 运算符出现的个数 都统计出来
      变量个数 必须比 运算符出现的个数 多一个。这样有会问题不?
    其实这个问题 我要解决的问题是判断
     一个算术表达式的正确性
     比如 页面上让输入 aa+bb-cc/dd (支持括号)等  aa ,bb cc,dd 是对应数据库中的数字字段
     想这样拼凑出 支持简单运算的sql。先把这些字符 解释成 1+1-1/1 (把所有的字段都用1代替)假如能运算成功 就说明表达式正确
     不能则错误
    所以 就出现了上面的 情况判断不了。哪位兄台还有没有更好的办法判断表达式正确性 
    望指教..