为什么说 JS 是一门很混乱的语言

JavaScript018

为什么说 JS 是一门很混乱的语言,第1张

首先,js要面对多种解析器,每种浏览器都是一种不同的解析器,虽然有标准,但有些浏览器就是不按标准来(比如IE)。此种情况下,js不乱才怪!就好像中文,虽然是统一的语言,但每一省每一市每一县甚至每一乡的语音都不一样,乱吗?乱!

其次,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对象,所以可以正常调用。