2 qq 37811712 qq_37811712 于 2017.08.31 09:27 提问

es6,js有个案例 跪求解释,参数怎么成了要执行的函数代码了,如下str

let str = 'return ' + 'Hello ${name}!';
let func = new Function('name', str);
func('Jack') // "Hello Jack!"

3个回答

sinat_32290679
sinat_32290679   2017.08.31 14:40

Function 构造函数
new Function ([arg1[, arg2[, ...argN]],] functionBody)
参数
arg1, arg2, ... argN
被函数使用的参数的名称必须是合法命名的。参数名称是一个有效的JavaScript标识符的字符串,或者一个用逗号分隔的有效字符串的列表;例如“×”,“theValue”,或“A,B”。
functionBody
一个含有包括函数定义的JavaScript语句的字符串。

这是一种生成函数对象的方式之一

sinat_32290679
sinat_32290679   2017.08.31 14:43
sunny_desmond
sunny_desmond   Rxr 2017.08.31 16:15

${name} 在es6里面是一种 模板字符串变量的写法。它是不会当做字符串来解析的,会自动认为这个是一个变量。可以看一下阮一峰老师写的ES6教程 模板字符串变量

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
[js高手之路] es6系列教程 - 不定参数与展开运算符(...)
三个点(...)在es6中,有两个含义: 用在形参中, 表示传递给他的参数集合, 类似于arguments, 叫不定参数. 语法格式:  在形参面前加三个点( ... )用在数组前面,可以把数组的值全部打散,展开,叫展开运算符. 语法格式:  在数组面前加三个点( ... ) 求不定参数的和,以前可以用arguments来做,现在可以用不定参数来做,如下: 1 fu
js 中的立即执行函数
相信大家经常会遇到下面这两种写法: (function(){ ... })() 和 (function(){ ... }()) 关于这样写是什么意思呢?有什么区别呢? 在此之前,我们需要了解几个概念: 函数声明、函数表达式、匿名函数 函数声明: function fnName() {...} ; 使用 function 关键字声明一个函数,再执行一个函数名...
javascript基础语法(做题)
makeClosures实现函数 makeClosures,调用之后满足如下条件: 1、返回一个函数数组 result,长度与 arr 相同 2、运行 result 中第 i 个函数,即 resulti,结果与 fn(arr[i]) 相同 输入例子: var arr = [1, 2, 3]; var square = function (x) { return x * x; }; var
es6 javascript函数参数的尾逗号
ES7 有一个提案,允许函数的最后一个参数有尾逗号( trailing comma )。目前,函数定义和调用时,都不允许有参数的尾逗号。function test(a,b,){ /********/ } test(1,2);如果以后要在函数的定义之中添加参数,就势必还要添加一个逗号。这对版本管理系统来说,就会显示,添加逗号的那一行也发生了变动。这看上去有点冗余,因此新提案允许定义和调用时,尾部...
Javascript 代码注释规范
javascript 代码注释规范 注释一般来说是好事情,但新手编程经常犯错误。他们写注释解释“代码是什么”,但这样解释性注释应该越少越好。 严肃地说,好的代码应该容易理解无需注释。有个极好规则:如果代码不清楚需要注释,那么也许可以重构代码。 有时最好使用函数代替一些代码片段,如下:function showPrimes(n) { nextPrime: for (let i = 2
自学-ES6篇-异步操作和Async函数
异步编程对JavaScript语言太重要。Javascript语言的执行环境是“单线程”的,如果没有异步编程,根本没法用,非卡死不可。 ES6诞生以前,异步编程的方法,大概有下面四种。 回调函数 事件监听 发布/订阅 Promise 对象 回调函数 ES6将JavaScript异步编程带入了一个全新的阶段,ES7的Async函数更是提出了异步编程的终极解决
es6 Generator Thunk函数实现自动执行
function *gen(){ var res = yield 1+2; yield 2+3; yield 3+4; } var genFun = gen(); 执行流程: 1、var result = genFun.next(); 只是将 yield后面的代码执行一下,返回到result中,这个时候还没有res什么事情呢。 2、再...
ES6---JS异步编程的几种解决方法及其优缺点
前言因项目需要从LiveScript转为ES6, 所以最近看了阮一峰的ES6教程,主要感兴趣的是ES6对JS的异步编程新的解决方案,ES6增加了promise和Generator等解决方法。现在我们来大致理清一下到ES6为止的JS异步解决的思路以及他们各自的优缺点。起因我们都知道JS是单线程的,这也正是异步编程对于JS很重要的原因,因为它无法忍受耗时太长的操作。 正因如此有一系列的实现异步的方法方法
es6 javascript 尾调用
1  什么是尾调用?尾调用( Tail Call )是函数式编程的一个重要概念,本身非常简单,一句话就能说清楚,就是指某个函数的最后一步是调用另一个函数。function f(x){ return g(x); }上面代码中,函数 f 的最后一步是调用函数 g ,这就叫尾调用。以下三种情况,都不属于尾调用。// 情况一 function f(x){ let y = g(x); return ...
JS中的回调函数,以及ES6中通过promise处理回调
简要介绍:ES6中,可以通过promise来处理回调函数,回调函数经常用于异步操作中,间接来说,可以通过promise优化异步操作。1.什么是JS中的回调函数?回调函数是作为参数传递给另外一个函数,并且改回调函数在函数主题执行完后再执行。举例来说:function callback(m,n){ alert("我是回调函数,我在执行"); return m+n }function myFuncti