`

蛋疼的js 之函数篇 (function(window,undefined){code...})(window) .

 
阅读更多

来源:http://blog.csdn.net/wll525775008/article/details/17305985

 

第一次在jQuery中看到这种写法,很是纠结这是什么意思。

    后来经查证,这是一对括号中定义了一个匿名函数并马上对其进行调用,这段代码是马上执行的。最后面那个小括号

及里面的参数就是对这个匿名函数调用及传的参数。

    现在匿名函数有两个参数,一个window,一个undefined,传入的参数是window,第二个参数没有传。为什么这样做呢,因为在js中,window和undefined是非常重要的两个变量,window表示浏览器窗口对象,undefined则表示未定义,但js并没有将他们两个作为保留字,匿名函数中的window和undefined两个是可以被重定义的,你完全可以定义window='aa';当然这仅限于匿名函数,其余的地方你这么定义是不可以的,jQuery为了避免覆盖window和undefined才这样写————不对。。。。。。

1
2
3
4
5
6
7
8
//这段代码中,window和undefined并没有被覆盖
(function(){
    window = 'aa';
    undefined = 'bbb';
    undefined = void 0;
    alert(window)
    alert(undefined)
})()
1
2
3
4
5
6
7
8
//下面这段代码中,window很容易就被赋值为aa undefined的值不可以被修改,jQuery这样写貌似更不安全才对
(function(window, undefined){
    window = 'aa';
    undefined = 'bbb';
    undefined = void 0;
    alert(window)
    alert(undefined)
})(window)
分享到:
评论

相关推荐

    javascript简单实现命名空间效果.docx

    JavaScript 命名空间是一种组织代码的策略,用于避免全局变量污染和冲突,尤其是在大型项目中,多个组件或模块共存时。JavaScript 本身并不直接支持命名空间的概念,但可以通过对象和闭包来模拟实现。以下是一些实现...

    深入认识javascript中得eval函数

    ### 深入认识JavaScript中的eval函数 #### 一、eval函数概述 在JavaScript中,`eval`函数是一个内置函数,它可以将字符串形式的代码解析并执行。这为开发者提供了一种灵活的方式来动态生成和执行代码。然而,由于...

    js培训记录

    JavaScript,简称JS,是一种广泛用于Web开发的轻量级脚本语言。它是基于对象、事件驱动、解释型的,主要用于实现客户端的动态交互效果。在HTML文档中,JS通常通过`<script>`标签来引入或内联编写。下面将详细讨论JS...

    C#调用web做窗体界面

    3. **编写JavaScript代码**:在HTML文件中编写JavaScript函数,这些函数可以通过调用`window.external`对象来访问之前注册的C#类的方法。 例如,可以实现如下功能: ```csharp public class ControlSupport : ...

    Function模式下1

    if (typeof window.addEventListener === 'function') { utils.addListener = function (el, type, fn) { el.addEventListener(type, fn, false); }; } else if (typeof document.attachEvent !== 'undefined')...

    写出更好的JavaScript程序之undefined篇(中)

    在上一篇文章中,作者探讨了一些常见的利用 `undefined` 的方法,而在本篇中,我们将深入讨论一些不太常见但仍然有价值的技巧。 首先,作者提到了一个与 `void(0)` 类似的技巧,即创建一个空函数并立即执行它,以此...

    js基础用法全集.txt

    - **JavaScript的基本数据类型**包括:String(字符串)、Number(数字)、Boolean(布尔值)、Null(空)、Undefined(未定义)。 - **类型转换**: - `parseInt(string)`:将字符串转换为整数。 - `parseFloat...

    javascript eval函数深入认识

    JavaScript 的 `eval` 函数是一个强大且复杂的工具,主要用于将字符串转化为可执行的 JavaScript 代码。在深入讨论之前,我们首先要明确一点:`eval` 的使用应当谨慎,因为它可能导致安全风险,例如执行恶意代码,...

    基于jquery的滚动鼠标放大缩小图片效果 兼容火狐.zip

    在前端开发中,jQuery是一个非常流行的JavaScript库,它简化了DOM操作、事件处理、动画以及Ajax交互等任务。本文将详细解析如何利用jQuery实现一个滚动鼠标时图片放大缩小的效果,并且该效果兼容火狐浏览器。 首先...

    javascript常用大全

    定义函数使用`function name(parameters) { code }`,调用函数则直接写`name(value1, value2, ...)`。 5. 对象:JavaScript中的对象是键值对的集合,可以通过`{key1: value1, key2: value2}`创建。对象的属性可以...

    JavaScript DOM编程艺术 源代码.rar code

    - 函数:`function`关键字用于定义函数,它们可以接收参数并返回值。 2. **DOM概念** - DOM树:HTML或XML文档被解析成一棵节点树,其中每个元素、属性和文本都是一个节点。 - Document对象:整个DOM树的根节点,...

    详解JavaScript函数对象

    JavaScript中的函数对象是一种核心特性,它是事件驱动或按需调用的可重复使用代码块。在JavaScript中,函数不仅作为可执行的代码,还可以作为数据结构进行传递和存储。让我们详细了解一下JavaScript函数对象的各个...

    jquery简介

    3. **事件处理**:jQuery 通过 `$().click()` 或 `$().bind('click', function() {...})` 等方法来绑定事件处理函数,简化了传统的 JavaScript 事件处理。 4. **动画效果**:jQuery 提供了一系列动画方法,如 `...

    判断浏览器的版本等信息

    这个函数会根据不同类型的浏览器弹出相应的警告框,并显示浏览器的版本号。 #### 4. 其他浏览器信息 除了判断浏览器类型和版本,我们还可以获取更多关于浏览器的信息,如平台、编码名称、是否支持cookies等。以下...

    解读jQuery插件开发流程_.docx

    (function ($, window, document, undefined) { // ... (与之前相同) })(jQuery, window, document); ``` - 这样做可以确保即使用户修改了jQuery的别名(如将`$`改为`jQuery`),插件仍然能够正常运行。 #### ...

    javascript 基础教程精选.docx

    使用`function`关键字定义函数,如`function myFunction(param1, param2) { // code }`。 8. **定时器**: `setInterval`用于设置定时执行的函数,如`setInterval(myFunction, 1000)`,1000毫秒后执行`myFunction...

    jquery实现的a标签锚点定位特效源码.zip

    要使用jQuery,我们需要在页面中引入jQuery库的JS文件,例如`<script src="https://code.jquery.com/jquery-3.x.x.min.js"></script>`。 接着,让我们分析源码的核心部分。在`132677743321520962`这个文件中,可能...

Global site tag (gtag.js) - Google Analytics