JS如何定义用字符串拼接的变量
今天在写js的时候碰到了难题,我又一个页面需要生成很多的变量。但是变量的名称是根据参数的不同而区分的。
例如可能需要生成date_1,date_2,datet_3...(后面的数字是根据参数来的)。所以我的函数名应该由varname="test_"+num;生成函数名但这问题就来了。
1可以使用window[name]=""这种方式来定义变量:
所以var"test_"+num=100;这中肯定是错误的。后来问了大哥后才知道。可以使用window[name]=100这种方式来定义变量。看代码
functioncreate_variable(num){ varname="test_"+num;//生成函数名 window[name]=100; window['name']=200;//注意看中括号里的内容加引号和不加引号的区别 } create_variable(2); alert(test_2);//100; alert(name);//200;
总结window用中括号的方式定义变量时,中括号里的内容应该是字符串。如果是一个变量的话,他就会解析这个变量找到具体的值。
他和点语法区别就是这里,点语法后面跟的内容就是要定义的变量名。而不会在解析他是否为变量之类的。例如
varname="test" window.name=200 alert(name);//200 alert(test);ReferenceError:testisnotdefined
2用对象的形式
vartest={}; for(vari=0;i<3;i++){ test['test_'+i]='我是字符串'+i; console.log(test['test_'+i]);//输出:我是字符串0,我是字符串1,我是字符串2 } console.log(test_0);//输出:ReferenceError:test_0isnotdefined console.log(test['test_0']);//输出:我是字符串0
3用数组的形式
vartest=[]; for(vari=0;i<3;i++){ test[i]='我是字符串'+i; console.log(test[i]);//输出:我是字符串0,我是字符串1,我是字符串2 } console.log(test[0]);//输出:我是字符串0
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。