javaScript怪癖分析

最近了解到javascript中有些编程怪癖现象,很有意思,有必要总结一下:

1.未知变量名创建全局变量

在我们平常的编写javascript程序的时候,有的人写法不是很正规,在定义变量的时候 直接定义“变量名=值”前面没有加上"var" 则javascript自动将其定义为全局变量看待

但在 ECMAScript5 的严谨模式得到警告:

例如:function f() { ‘use strict‘; foo = 123 } f() ReferenceError: foo is not defined

2.两个空值 underfined 和 null

对于“空值”或“空引用”,大多数编程语言只有一个值。比如,在 Java 中用的是 null,但在javascript给出了2个值(undefined 和 null)

underfined:

 <script type="text/javascript">
        var s;
        console.log(s);
    </script>

结果:

同理:当在对传值参数操作的时候,如果没有值,会自动分配一个undefined。

  <script type="text/javascript">
       function id(x) { return x }
       console.log(x);
  </script>

在火狐运行结果:

在IE运行结果: 汗!火狐好歹给一个undefined,IE直接就判断未定义,这机制太懒了。。。

null:是被开发者用来明确指出某个值是缺失的

在开发过程中,我们传参可能需要这个参数没有值,对此场景就设置一下参数等于null即可。

校检:一个变量是否有值?

<script type="text/javascript">
         //例子
         var x ;
         if (x) {
             console.log(‘有值‘);
         } else {
             console.log(‘没值‘);
         }
</script>

如果你想知道变量 x 是否有值,正常情况下,你需要同时检验 undefined 与 null。 幸运的是两个值都是false。 因此,只用一个判断,就可以同时检验这两项是否为真,有一点要注意的是:这个检查也会把 false-0+0NaN 与 ‘‘ 当成“空值”。 如果这不是你想要的,那么就不能使用上面的校检方法了。还有2种方法选择

有人喜欢用"!="来进行参数校验

时间: 2024-12-28 18:05:23

javaScript怪癖分析的相关文章

JavaScript 性能分析新工具 OneProfile

OneProfile 是一个网页版的小工具,可以用全新的方式展示 JavaScript 性能分析的结果,帮助开发者洞悉函数调用关系,优化应用性能. 点击打开 OneProfile 背景 Chrome Dev Tools 自带的 CPU Profile 功能非常好用.用它可以方便的生成 JavaScript 的 Flame Chart. 更棒的是你可以把 Flame Chart 导出,留着下次或者拷贝到其它机器上查看,特别好奇它是怎么实现的. 但是网上关于它的文件格式以及怎么画图的文档非常稀有,所

一些有用的javascript实例分析(三)

原文:一些有用的javascript实例分析(三) 1 10 输入两个数字,比较大小 2 window.onload = function () 3 { 4 var aInput = document.getElementsByTagName("input"); 5 var aSpan = document.getElementsByTagName("span")[0]; 6 for(var i=0;i<aInput.length-1;i++){ 7 aInp

用Chrome开发者工具做JavaScript性能分析

英文原文:Zack Grossbart,编译:伯乐在线——王筱 你的网站正常运转.现在我们来让它运转的更快.网站的性能由页面载入速度和代码执行效率决定.一些服务可以让你的网站载入更快,比如压缩JS和CDN,但是让代码执行的更快你要做的事情. 代码中很小的改动都可能对性能造成巨大的影响.快速灵活的网站和可怕的“无响应脚本”对话框可能只有几行代码的差别.这篇文章告诉你如何通过用Chrome开发者工具(Chrome Developer Tools)找到这几行关键的代码. 设置一个基线 我们来看一个简单

一些有用的javascript实例分析(一)

原文:一些有用的javascript实例分析(一) 本文以http://fgm.cc/learn/链接的实例索引为基础,可参见其实际效果.分析和整理了一些有用的javascript实例,相信对一些初学者有一定的帮助.本人水平有限,有许多不足的地方还望包涵,指正.废话不多说,正文以代码开始,不在代码中死去,就在代码中重生.不经历码农,如何来做攻城狮. 1 1 控制div属性 2 //参数为对象,样式属性和值 3 var changeStyle=function(elem,attr,value){

一些有用的javascript实例分析(二)

原文:一些有用的javascript实例分析(二) 1 5 求出数组中所有数字的和 2 window.onload = function () 3 { 4 var oBtn = document.getElementsByTagName("button")[0]; 5 var oInput = document.getElementsByTagName("input")[0] 6 var oStrong = document.getElementsByTagName

JavaScript 空间分析库——JSTS和Turf【转】

https://blog.csdn.net/neimeng0/article/details/80363468 前言 项目中有管线的空间拓扑关系查询需求,在npm中检索到JSTS和Turf两个JavaScript 空间分析库. JSTS JSTS是一个符合OGC规范的简单要素空间位置判定函数JavaScript库,JSTS也是Java类库JTS的一个接口,且与OpenLayer3具有互操作性.       目前原生的OpenLayers3并不支持空间拓扑关系查询,此类库可以作为重要的补充.通过此

浏览器中Javascript单线程分析

线程这个特性对于一门语言环境来说是尤其重要的,在Java/C++环境下都提供了多线程API操作. 但在Javascript中据说代码执行时单线程的,大量计算的逻辑会阻塞浏览器HTML渲染,但setTimeout延时处理.XHR的异步请求是如何实现的, 接下来我们将逐一分析. 首先需要肯定的是浏览器中Javascript确实是单线程执行的,不信我们可以看个例子. <html> <head></head> <body> <script>setTime

我希望自己尽早知道的 7 个 JavaScript 怪癖(转载oschina)

如果对你来说JavaScript还是一门全新的语言,或者你是在最近的开发中才刚刚对它有所了解,那么你可能会有些许挫败 感.任何编程语言都有它自己的怪癖(quirks)--然而,当你从那些强类型的服务器端语言转向JavaScript的时候 ,你会感到非常困惑.我就是这样!当我在几年前做全职JavaScript开发的时候,我多么希望关于这门语言的许多事情我能尽早地知道.我希望通过本文中分享的一些怪癖能让你免于遭受我所经历过的那些头疼的日子.本文并非一个详尽的列表,只是一些取样,目的是抛砖引玉,并且让

Chrome开发者工具之JavaScript内存分析

内存泄漏是指计算机可用内存的逐渐减少.当程序持续无法释放其使用的临时内存时就会发生.JavaScript的web应用也会经常遇到在原生应用程序中出现的内存相关的问题,如 泄漏和溢出,web应用也需要应对 垃圾回收停顿. 尽管JavaScript使用垃圾回收进行自动内存管理,但有效的(effective)内存管理依然很重要.在这篇文章中我们将探讨分析JavaScript web应用中的内存问题.在学习有关特性时请确保尝试一下相关案例以提高你对这些工具在实践中如何工作的认识.请阅读 内存 101(M