需求:创建一个Function 函数,取三个数字中最大的那个
function foo(a,b,c){
var res=a>b ? a : b;
res=res>c ? res : c;
return res;
} //传统
var func=new Function ('a','b','c',"var res=a>b ? a : b;res=res>c ? res : c;return res;");
解决代码太长的办法:
1.利用加法连接字符串
var func=new Function ('a','b','c',
'var res=a>b ? a : b;'+
'res=res>c ? res : c;'+
'return res;');
2.利用字符串特性
function foo(a,b,c){
var res=a>b ? a : b;
res=res>c ? res : c;
return res;
}
var func=new Function('a','b','c','return foo(a,b,c);')
3.ES6的语法
使用键盘左上角的 左单引号 表示可换行字符串的界定符 ` 可换行字符串
ar func=new Function ('a','b','c',
`var res=a>b ? a : b;
res=res>c ? res : c;
return res;
`)
4.利用DOM的特性完成改方法
<div id="code" style="display:none">
var res=a>b ? a : b;
res=res>c ? res : c;
return res;
</div>
// var txt=document.getElementById('code').innerHTML+''; 大于号被转义,所以不行
var txt=document.getElementById('code').lastChild.nodeValue;
var func=new Function ('a','b','c',txt);