with、eval的使用

hdc-web / 2024-10-29 / 原文

with语句的使用

with语句 扩展一个语句的作用域链。
    <script>
    var obj = {
        message : "Hello World"
    }
    with (obj) {
        console.log(message)
    }
    </script>
◼ 不建议使用with语句,因为它可能是混淆错误和兼容性问题的根源。

eval函数

◼ 内建函数eval 允许执行一个代码字符串。
    eval是一个特殊的函数,它可以将传入的字符串当做JavaScript代码来运行;
    eval会将最后一句执行语句的结果,作为返回值;
    var codeString = `var name = "hdc";console.log(name)`
    eval(codeString)//hdc
◼ 不建议在开发中使用eval:
    eval代码的可读性非常的差(代码的可读性是高质量代码的重要原则);
    eval是一个字符串,那么有可能在执行的过程中被刻意篡改,那么可能会造成被攻击的风险;
    eval的执行必须经过JavaScript解释器,不能被JavaScript引擎优化;