javascript 对变量长度或者格式有限制吗

今天做一个对UUID传参的时候才发现的,虽然解决方法有,但是不清楚原因是啥,能给个指点吗?javascript标准是否有明确的限制?(找了一下没有找到)

var id = $("#jqGrid").getCell(colId, "id").toString();
console.log(typeof id);
var opr = $("#jqGrid").getCell(colId, array[i]);
/*$("#jqGrid").setCell(colId, array[i], '<a href="javascript:vm.'+array[i]+'('+id+')">'+opr+'');*/
$("#jqGrid").setCell(colId, array[i], '<a href="javascript:vm.'+array[i]+'(\''+id+'\')">'+opr+'');

id明明是个字符串,但是必须加引号才可以被认为是字符串传参。
是因为js的语法很松散吗?

阅读 6.8k
2 个回答

标题 和 内容 感觉问的不是一个事情。。。

标题的问题:

js 的变量命名是有规则的:

变量命名规则如下:
1、变量命名必须以字母、下划线”_”或者”$”为开头。其他字符可以是字母、_、美元符号或数字。
2、变量名中不允许使用空格和其他标点符号,首个字不能为数字。
3、变量名长度不能超过255个字符。
4、变量名区分大小写。(javascript是区分大小写的语言)
5、变量名必须放在同一行中
6、不能使用脚本语言中保留的关键字、保留字、true、false 和 null 作为标识符。

id 里出现了不允许的字符 -

内容的问题:

变成字符串后,你说解决了问题
那么你这个 id 我猜应该是一个 键名,类似 map[id] 的用法
这个用法的问题 和 变量命名规则 实际上是没有关系的两个问题

修改后的问题:

$("#jqGrid").setCell(colId, array[i], '<a href="javascript:vm.'+array[i]+'('+id+')">'+opr+'');

这段生成的HTML <a href="javascript:vm.xxx(aaaa-bbbb-cccc-dddd)">

$("#jqGrid").setCell(colId, array[i], '<a href="javascript:vm.'+array[i]+'(\''+id+'\')">'+opr+'');

这段生成的HTML <a href="javascript:vm.xxx('aaaa-bbbb-cccc-dddd')">

上面是执行 vm.xxx(aaaa-bbbb-cccc-dddd)
这里 aaaa-bbbb-cccc-dddd 从语法来讲就不是一个字符串,是个表达式,4个变量连续减法),然后 aaaa,bbbb,cccc,dddd 都未定义

下面是执行 vm.xxx('aaaa-bbbb-cccc-dddd')
这里 'aaaa-bbbb-cccc-dddd' 才是个字符串

你上面是要表达什么意思呢,你上一行明显是语法错误,而不是长度限制之类的

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题