您好!欢迎访问家园网-www.jy.wang!

家园网

eval是干啥的?是啥意思?从词源角度讲一下它的意思

网络 作者:本站 点击:
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
<title>验证表单中是否有空值</title>
<style type="text/css">
*{
font-size:12px;
}
</style>
</head>
<body background="images/bg.gif">
<table width="487" height="333" border="0" align="center" cellpadding="0" cellspacing="0" background="images/bg.JPG">
  <tr>
    <td align="center" valign="top"><br>
      <br>
      <br>
      <br>      <br>      <table width="86%" border="0" align="center" cellpadding="2" cellspacing="1" bgcolor="#6666CC">
      <form name="form1" onsubmit="return AllSubmit()">
        <tr bgcolor="#FFFFFF">
          <td height="22" align="right">所属类别:</td>
          <td height="22" align="left">      
        <select name="txt1" id="txt1">
          <option value="数码设备">数码设备</option>
          <option value="家用电器">家用电器</option>
          <option value="礼品工艺">日常用品</option>
            </select>
              <select name="txt2" id="txt2">
                <option value="数码相机">数码相机</option>
                <option value="打印机">打印机</option>
              </select></td>
        </tr>
        <tr bgcolor="#FFFFFF">
          <td height="22" align="right">商品名称:</td>
          <td height="22" align="left"><input name="txt3" type="text" id="txt3" size="30" maxlength="50"></td>
        </tr>
        <tr bgcolor="#FFFFFF">
          <td height="22" align="right">市场价格:</td>
          <td height="22" align="left"><input name="txt4" type="text" id="txt4" size="10"></td>
        </tr>
        <tr bgcolor="#FFFFFF">
          <td height="22" align="right">会员价格:</td>
          <td height="22" align="left"><input name="txt5" type="text" id="txt5" size="10" maxlength="50"></td>
        </tr>
        <tr bgcolor="#FFFFFF">
          <td height="22" align="right">商品简介:</td>
          <td height="22" align="left"><textarea name="txt6" cols="35" rows="4" id="txt6"></textarea></td>
        </tr>
        <tr bgcolor="#FFFFFF">
          <td height="22" align="right">商品数量:</td>
          <td height="22" align="left"><input name="txt7" type="text" id="txt7" size="10"></td>
        </tr>
        <tr bgcolor="#FFFFFF">
          <td height="22" colspan="2" align="center"><input name="sub" type="submit" id="sub2" value="提交">
&nbsp;
        <input type="reset" name="Submit2" value="重置">        </td>
        </tr>
      </form>
    </table></td>
  </tr>
</table>
<script type="text/javascript">
<!--
function AllSubmit(){
  var T=true;//初始化变量
  var e=window.event;//获取事件对象
  var obj=e.srcElement;//获取发生事件的元素
  for (var i=1;i<=7;i++){
    if (eval("obj."+"txt"+i).value==""){//如果表单元素有空值
      T=false;//为变量T进行重新赋值
      break;//跳出for循环语句
    }
  }
  if (!T){//如果变量T的值为false
    alert("提交信息不允许为空");//弹出对话框
  }
  return T;//返回变量T的值
}
//-->
</script>
</body>
</html>


上面代码中的eval是干啥的?是啥意思?从词源角度讲一下它的意思


在您提供的代码中,eval() 函数的作用是‌将字符串作为 JavaScript 代码来执行‌。

具体到这段代码:

eval("obj."+"txt"+i).value
  • 在循环中,当 i=1 时,"obj."+"txt"+i 拼接成字符串 "obj.txt1"

  • eval("obj.txt1") 就会执行这段字符串代码,相当于直接写 obj.txt1

  • 这样就动态获取了表单中 name="txt1" 的元素对象

从词源角度解释:
eval 来源于英语单词 ‌"evaluate"‌(评估、求值),意思是"对表达式进行求值"。在编程语境中,它特指"对字符串形式的代码进行解析并执行"。

不过需要说明的是,‌现代 JavaScript 开发中已经不推荐使用 eval()‌,主要因为:

  1. 安全性风险:可能执行恶意代码

  2. 性能较差:需要动态编译执行

  3. 调试困难

更好的替代方案是:

// 使用 DOM 方法直接获取元素
document.getElementById("txt" + i).value
// 或者
document.forms["form1"]["txt" + i].value

您代码中的验证逻辑完全可以用更安全、高效的方式重写。

标签: