js undefined 小记

今天看jquery发现其框架参数传递很有意思(1.4.0以上版本)

(function( window, undefined ) {
    //中间代码
})(window);

很明显执行的时候传入的参数少一个,查了资料原来是为了屏蔽老浏览器(据说IE5之前)undefined被用户重定义,于是我试了下

      var undefined = "hello world";
      var a;
      if (a == undefined){
        console.log("ok2");
      }
      console.log(a);
      console.log(undefined);//输出 undefined

输出:

ok2

undefined

undefined

很明显我最新的chrom中普通undefined已经不能被重定义了

但是无聊的我发现匿名函数中依然可以

    (function(window,undefined){

      var undefined = "hello world";
      var a;
      if (a == undefined){
        console.log("ok1");
      }
      console.log(a);
      console.log(undefined);//输出hello world

    })(window);

输出:

undefined

hello world

结论:匿名函数判断变量undefined有风险,想判需谨慎。

时间: 2024-08-30 16:46:44

js undefined 小记的相关文章

null和undefined小记

经常看到null和undefined,差了些资料,总结一下: null是js的关键字,undefined不是,他们设计之初就是来表示值的空缺 null与undefined 都是他们各自自由类型的唯一成员 null == undefined ,所以区分他们的时候要严格用 ===: null是不可以用typeof来直接判断的 实际上,使用  .  和 []  方法来存取这两个值的成员或方法,都会产生一个类型错误 赋值或传参的时候,最佳实践为null.

JS undefined null 区别

null == undefined null !== undefined null 这是一个对象,但是为空.因为是对象,所以 typeof null 返回 'object' .null 是 JavaScript 保留关键字.null 参与数值运算时其值会自动转换为 0 ,因此,下列表达式计算后会得到正确的数值: 表达式:123 + null 结果值:123 表达式:123 * null 结果值:0 undefined undefined是全局对象(window)的一个特殊属性,其值是未定义的.但

js undefined、null和NaN

undefined:一个变量未被声明或者已经声明但未赋值或者该变量从未出现过. null:一个变量没有值 NaN:非数字 文本与布尔类型的数据理论上会被视为NaN,因为它们并非数字,但在实际上,并非如此.NaN的设计目的在于表示并非我们预期的数字数据,是数字数据类型有误时的指标,通常只在计算过程中需要数字但是收到的是非数字的数据时,才会看到NaN. 如:a=(1+12)*?; alert(a);//NaN b="";//null alert(c);//undefined

js undefined

var bbb1 = typeof str== 'undefined';  //truevar bbb2 = typeof str== undefined;  //falsevar bbb3 = str== undefined;  //truevar bbb4 = str== 'undefined';  //undefined

js undefined易错分析

undefined 以下是错误写法: data = undefined; alert(undefined==false);//这样判断会输出false; if(data!=undefined || data!='' || data!=null || data!="/"){ alert(111); //*会输出111,因为先判断data!=undefined为假后,再开始继续判断data!='' return false; }else{ alert(222); return true;

JS——undefined、null

1.undefined == false   //返回false 2.null == false     //返回false 3.undefined == null    //返回true 4.undefined === null    //返回false

js this小记

在JavaScript中,this 对象是在函数被调用时动态定义的. JS中有三种方法来设置this对象: someThing.someFunction(arg1, arg2, argN) someFunction.call(someThing, arg1, arg2, argN) someFunction.apply(someThing, [arg1, arg2, argN]) 上面几个例子中, this 都是 someThing, 调用没有前导父对象的函数通常会得到全局对象, 在大多数浏览器

js正则小记

正则表达式 创建方法:1.字面量方法(比较方便常用): 2.RegExp构造函数(用于正则表达式必须在运行时动态生成的情形,写法注意:需要双写反斜杠转义及对引号转义) var reg = /^\d+$/i; var reg = new RegExp("^\d+", "i"); 指定标志字符串:'i'==不区分大小写  'g'==全局匹配 'm'==多行匹配 结构:一个选择可以有多个序列 (/a|b/) 一个序列可以有多个因子   选择->序列->因子 符

exif.js 用法小记

一.API 方法 名称 说明 EXIF.getData(img, callback) 获取图像的数据 能兼容尚未支持提供 EXIF 数据的浏览器获取到元数据. EXIF.getTag(img, tag) 获取图像的某个数据 EXIF.getAllTags(img) 获取图像的全部数据,值以对象的方式返回 EXIF.pretty(img) 获取图像的全部数据,值以字符串的方式返回 二.EXIF标识 名称 说明 ExifVersion Exif 版本 FlashPixVersion FlashPix