其次,js还要跨平台!只要是能浏览网页的系统或设备,几乎都能运行js,这样js就要面对各种不同需求的挑战,众口难调,再好的厨师也不可能什么菜都能做得完美,乱是必须的。
最后,一种语言如果给人乱的感觉,那是因为用的人多,用途广泛,是不可或缺的表现!
g是global,全局的意思,比如有一规则是否找到一个就结束,还是要找到所有匹配。p已经是一个正则式了,可以这样定义:p=/^\d+$/g然后直接p.test(a)
因为p已经是正则式,所以new RegExp(),不能重复定义是否全局,否则会与p本身定义有冲突。如果new RegExp()带的参数是个字符串, p ='^\\d+$'则可以加‘g’参数。
事情是这样的,想通了就明白了:JavaScript是一种面向对象的脚本语言,对象不是完全面向对象。你用
var a = 255
实际上创建了一个Number类型的对象,你
document.write(a.toString(16))
实际上是调用了Number对象的toString()方法。
而255在JavaScript里只是一个数值型的常量,所以255.toString(16)会出现解析错误,原因是JavaScript中并非“一切皆是对象”,而完全面向对象的Ruby就可以使用类似的用法。
但是,(255).toString(16)多了一对括号,在解析.toString(16)之前,已经把前面的部分转换成了一个Number对象,所以可以正常调用。