美文网首页
7、运行时求值

7、运行时求值

作者: Elevens_regret | 来源:发表于2017-07-31 15:41 被阅读0次

用eval()方法进行求值

eval()方法将执行传入的代码的字符串,并在调用eval()方法的作用域内进行代码求值,最后返回传入字符串中最后一个表达式的执行结果。

console.log(eval("5 + 5"));  // 10
eval("var a = 5;");
console.log(a);  // 5

// 仅在调用eval()方法的作用于内进行求值
(function () {
    eval("var a = 6");
    console.log(a);  // 6
})();
console.log(a);  // 5

// 返回最后一个表达式的执行结果
var b = eval("3+4; 5+6");
console.log(b); // 11

在全局作用域内求值操作

eval()方法求值的作用域就是调用eval()时的作用域,要让代码字符串在全局作用域内进行求值,可以将代码字符串放在动态生成的<script>标签内,并将其插入到文档中

function globalEval(data) {
    // 去除字符串前后空格
    data= data.replace(/^\s*|\s*$/g,"");
    if(data){
        var head = document.getElementsByTagName("head")[0] || document.documentElement;
        var script = document.createElement("script");
        // 创建script节点
        script.tpye = "text/javascript";
        script.text = data;
        // 将节点附加到DOM上,再去除它
        head.appendChild(script);
        head.removeChild(script);
    }
}

globalEval("var a = 1");
console.log(window.a);  // 1

查找函数的参数名称

使用函数的toString()方法可以返回函数的原始文本,并且包含原始声明的所有空格,包括行结束符。

function getArgumentName(fn) {
    var found = /^[\s(]*function[^(]*\(\s*([^)]*?)\s*\)/.exec(fn.toString());
    return found && found[1] ? found[1].split(/,\s*/) : [];
}
function a(x, y, z) {}
console.log(getArgumentName(a)); // ["x", "y", "z"]

相关文章

  • 7、运行时求值

    用eval()方法进行求值 eval()方法将执行传入的代码的字符串,并在调用eval()方法的作用域内进行代码求...

  • 30天学习计划 js忍者秘籍 第9章 忍者点金术:运行时代码求值

    9.1.1 用eval()方法进行求值 eval()方法可能是在运行时进行代码求值的最常用方式了。作为定义在全局作...

  • spring 学习06

    运行时值注入 spring 提供了两种在运行时求值的方式 属性占位符 Spring 表达式语言 用法类似,但是目的...

  • Spring 实战 五: 运行时注入

    spring 提供了两种在运行时求值的方式: 属性占位符(Property placeholder) spring...

  • Swift Collection 中的 lazy 作用

    惰性求值 惰性求值常见于函数式编程中,也有人把惰性求值翻译成延迟求值(Lazy Evaluation)。它的目的是...

  • 9.Spring表达式语言

    首先说一下Spring提供了在运行时求值的两种方式:(1)属性占位符(2)spring表达式语言 属性占位符Spr...

  • Python中的优化:惰性求值详解

    惰性求值,也就是延迟求值,表达式不会在它被绑定到变量之后就立即求值,而是等用到时再求值。这个特性可以解决一些巨大甚...

  • Python基础篇之流程控制

    流程控制是计算机运算领域的用语,意指在程序运行时,个别的指令(或是陈述、子程序)运行或求值的顺序。不论是在声明式编...

  • 4.2 Variations on a Scheme: Lazy

    在元循环求值器的基础上,我们能够实现变体形式 惰性求值(lazy evaluation) 器。惰性求值器能够将程式...

  • 5.4-The Explicit-Control Evaluat

    将元循环求值器转换为寄存器机器语言,这样的求值器就是 显示控制求值器(explicit-control evalu...

网友评论

      本文标题:7、运行时求值

      本文链接:https://www.haomeiwen.com/subject/usxtlxtx.html