zoukankan      html  css  js  c++  java
  • jq源码立即执行函数的undefined参数

      2.0.3版本的整体结构是这样的

    (function( window, undefined ) {
    })( window );

      函数参数是undefined,那这个undefined是个变量标识符还是值呢?

      《JS权威指南》函数一章讲过,未给函数形参传值的时候,该形参的值是undefined。所以上面的形参undefined是一个局部变量标识符,该变量值是undefined。注意,undefined不是JS保留字和关键字。

    那这有什么用那呢?这种做法可以防止在jq.js之外对undefined进行赋值导致的一些冲突。

      相关知识:为什么undefined、NaN和Infinity可以被赋值,而null不可以?

    undefined = 123;
    NaN = 123;
    Infinity = 123;
    null = 123; // 报错:Uncaught Reference Error

      前三条语句可以执行,尽管赋值并没有成功;最后一条语句报错。  

      解答:

      undefined/NaN/Infinity是全局属性,这些属性是不可写(writable:false)的,也就是说在全局作用域内不能重新赋值(赋值无效,不会报错);

    null是一个JavaScript字面量(而不是全局对象的一个属性),不能对其赋值。

      因为null是js的关键字,而undefined虽然含义和null很像,但是他是js预定义的一个全局变量,他的值就是'undefined'。其实早在ES3中,有一个bug,

    undefined是一个可读可写的变量,可以给他赋任意值,但到了ES5就被修复了,他是一个只读的值,所以虽然没有报错,但是赋值语句是没有效果的。

      

      

  • 相关阅读:
    笔记
    BlangenOA项目展示(附源码)
    笔记截至20190406
    ASP.NET MVC 使用过滤器需要注意
    单例模式和HttpContext线程内唯一
    C#线程/进程同步(lock、Mutex、Semaphore)
    Web标准
    JavaScript 放置在文档最后面可以使页面加载速度更快
    GUI 面板实现 (解决了关闭事件)
    GUI 实现多个窗口 (使用封装特性)
  • 原文地址:https://www.cnblogs.com/zhansu/p/5658282.html
Copyright © 2011-2022 走看看