在学习的过程中总会有一些让我感到惊奇或者以前想不到的东西出现,有时这是另一个庞大复杂的知识体系,有时这只是一个不甚起眼却意义非凡的小知识点。在学习 JS 的过程中,在不断惊叹它的魅力之余,还偶尔学到一些自己觉得很值得记录下来的知识点。
JS 的字符串比较
之前学 C++ 和 JAVA ,字符串无论在比较还是传递内容的时候,都是用传址的方法,也就是说字符串是引用类型的,比较字符串是否相等不能直接比较,要用特定的方法或函数来比较,如 JAVA 要用 equals() 方法。
而 JS 的字符串比较是用传值的方法,传递字符串才用传址的方法。如下面的例子:
结果返回的是 alert() 中的内容,不愧是 JS
事件处理函数的工作机制
事件处理函数也就是 onclick、 onmouseover、 onmouseout等。它们能在特定的事件发生时调用特定的 JS 代码。其工作机制就是:当为某个元素添加了事件处理函数后,当事件发生时,就会调用相应的 JS 代码,这段代码会返回一个布尔值,当布尔值为 true 时,事件处理函数就会认为这个事件发生了,然后进行处理;返回 false 则被认为事件并没有发生。
这里有一个非常有代表性的 a 元素,大家都知道,用来生成超链接的,点击跳转相应的页面或者本页的某个地方。我认为 a 标签隐藏了一个 onclick 事件处理函数,所以点击才会有跳转。那可不可以禁止这个超链接的跳转,让它成为一个失活的哑炮超链接呢?如果之前的推论正确,a 元素的超链接是通过 onclick 函数实现的,并且返回 false 就能使 onclick 无效,那么,可以做一下尝试:
然后就发现超链接失效了,点击没跳转,实验成功
严格模式
在学习别人的程序的过程中,我发现 JS 开头的地方有这样的语句:
当时糊里糊涂的,这个像注释一样的是啥玩意?
原来这就是 “严格模式”
顾名思义,就是让程序变得更严格规范。怎么?原来的 JS 代码松散吗?
还真的挺松的, 先前被接受的拼写错误将会被认为是异常. JS 被设计为能使新人开发者更易于上手, 所以有时候会给本来错误操作赋予新的不报错误的语义. 有时候这可以解决当前的问题, 但有时候却会给以后留下更大的问题. 严格模式则把这些失误当成错误, 以便可以发现并立即将其改正.
至于严格模式的目的,借用阮一峰老师的话来概括就是:
消除Javascript语法的一些不合理、不严谨之处,减少一些怪异行为;
消除代码运行的一些不安全之处,保证代码运行的安全;
提高编译器效率,增加运行速度;
为未来新版本的Javascript做好铺垫。
详细关于 “严格模式” 的解说见阮一峰老师的 Javascript 严格模式详解
总的来说,使用”严格模式”是个好的习惯,也能培养好的习惯
昨天跟朋友去看了《金刚:骷髅岛》 ,想起小时候跟弟弟看的《金刚》,虽然剧情已经不大记得了,但金刚那招牌性的捶胸和怒吼,就倍感熟悉。最后等彩蛋,原来金刚不是那座岛唯一的王,还有许多更强的怪物,其中我好像看到了哥斯拉大王,期待哥斯拉大战金刚