eval函数动态拼接已有变量名的妙用

在项目前端中,常常会对参数进行拼接,这里简单的记录下,毕竟是自己踩过的坑。

var holiday_y1 = "111" ; 
var holiday_y2 = "222";
var holiday_y3 = "333";

如上有以上三个变量,_y1 _y2 _y3,不同的情景使用不同的变量。

场景:_y后的数字根据接收的参数id(val=1/2/3)来决定使用哪个变量,则可以这样

var vars_name = 'holiday_y' + id; //拼接变量名

测试结果:

eval函数动态拼接已有变量名的妙用_第1张图片

这时候的结果不是我们期望的“111”,  eval() 函数可计算某个字符串,并执行其中的的 javaScript代码,下面附上代码:

var holiday_y1 = "111" ; 
var holiday_y2 = "222";
var holiday_y3 = "333";

function test(id)  
{  

  var vars_name = 'holiday_y' +id; 
  console.log(vars_name);
  console.log(eval(vars_name));
} 

测试结果就是我们预期的那样:

eval函数动态拼接已有变量名的妙用_第2张图片

这里附上另一个踩过的坑,也是关于参数拼接的。

在做项目时候要将链接触发一个事件,需要拼接函数名称而且动态传入参数,结果参数引号一直引起js报错,经过研究发现了正确的写法,如下:

1.当函数只有一个参数时候,按照下面的写法即可,即在参数中用单引号引用就行

 "删除";

2.当函数中有两个以上的参数时候,按照下面的写法

这个时候第一个参数前面的双引号会被自动加入单引号引起来,如果再添加引号就多余了会导致js报错。

"删除";

下面这段代码是用来提示自己的,各位可以忽略:

for ( var key in json.message) {
  if(key == "-1"){
    //var value = json.message[key];
        content += ""+
         "下载"
    +
         "点击下载异常数据"
    +
        "";
  }else{
         content += ""+
         ""+key+""
    +""+json.message[key]+""+
         "";
    }
}

点击下载异常数据  这一段的注意下.

 

op = ['启用','编辑','删除'];

一个是包字符串常量用的(' var d="abc("+c+")"+"bcd";
var e="abc('"+c+"')"+"bcd";

var f='abc('+c+')'+'bcd';
var g='abc(\''+c+'\')'+'bcd';

 

 

 

你可能感兴趣的:(JavaScript)