变量名前使用$的好处。

int32位 posted @ Aug 06, 2013 12:30:21 PM , 2937 阅读
转载请注明:http://krystism.is-programmer.com/若有错误,请多多指正,谢谢!

在这之前,不得不说, 我以前非常讨厌像php、perl、shellscript这样变量名加个美元符号(我又不是每个变量都和钱有关),但在近段时间写大量js时, 不得不说这样引用变量确实非常之方便。 因为在js中可能会出现大量字符串中嵌入函数,函数中嵌入函数, 以前遇到的都比较简单,字符串一律用双引号, 里面再有字符串用单引号, 也没有出现什么问题,但如果出现大量的嵌入时,我们就必须引入大量的转义,代码非常难看。而在需要字符串连接时(连接某个字符串)变量更是麻烦,代码非常不具有可读性,而使用了美元符号加{}后,一切都变得简单明了,$ 和{}基本不需要转义,因为我们很少直接使用它们的字面义。

说到这, 还是不喜欢php中不加$被无理取闹当作字符串, 有时神神秘秘的不知道传了什么参数, 我觉得语法分析中应该检测这个错误,字符串强制引号,避免一些离奇的错误。

转载请注明:http://krystism.is-programmer.com/若有错误,请多多指正,谢谢!
  • 无匹配
  • 无匹配
Avatar_small
依云 说:
2013年8月06日 14:47

什么乱七八糟的……不要混淆了变量名和字符串内插(string interpolate)。Ruby 的变量名不加 $ 或者 # 这样奇怪的符号,不也照样有优秀的字符串内插机制?

Avatar_small
krystism 说:
2013年8月06日 18:53

@依云:
var item = "<li><a style=\"text-align:left;\" onClick=\"foo('bar" + id + "','" + url + "', '" + name + "');\">Item</a></li>";
这个难道不乱吗?
利用jquery 插入一个元素的时候偶尔会遇到这种情况。 当然实际我们并不需要。因此我们大可新建一个元素,然后逐一加入属性值。

Avatar_small
依云 说:
2013年8月06日 22:49

@krystism: 你没看懂我的话。

Avatar_small
krystism 说:
2013年8月07日 12:52

@依云: 字符串内嵌能说成最简单的变量扩展吗? 字符串内嵌中是不是变量值的一个副本,还是直接引用?

Avatar_small
依云 说:
2013年8月07日 13:03

@krystism: 可以,但不简单。副本和引用有什么关系?

Avatar_small
krystism 说:
2013年8月07日 13:36

@依云: 副本的话,词法分析的时候或者语法分析的时候遇到有$,就到符号表中找这个变量,然后把变量的值再重新拷贝一份填充字符串,引用的话就是直接用叻。

Avatar_small
依云 说:
2013年8月07日 15:16

@krystism: 有区别么?


登录 *


loading captcha image...
(输入验证码)
or Ctrl+Enter