专栏首页PHP在线javascript模仿块级作用域

javascript模仿块级作用域

模仿块级作用域

var somefunction=function(){

///这里是块级作用域

}

somefunction();

在这里定义了一个函数,然后立即调用。不会报错。

然而,下面的代码:

function(){

//这里是块级作用域

}(); //出错

这段代码会导致语法错误,因为javascript将function关键字当做一个函数声明的开始,而函数声明后不能跟圆括号。

然而函数表达式的后面可以跟圆括号。将函数声明转为函数表达式,像下面给它加上一对圆括号就可以了:

(function(){

//这里是块级作用域

})();

(function(){

var now = new Date();

if(now.getMonth() ==0 && now.getDate() ==1){

alert("happy year");

}

})();

这段代码放到全局作用域中,确定那天是1月1日,显示新年快乐。这种做法减少闭包占用内存的问题,因为没有指向匿名函数的引用。执行完毕,立即销毁作用域链。

静态私有变量

通过私有作用域中定义私有变量或函数,可以创建特权方法:

(function(){

//私有变量

var privateVariable = 10;

//私有函数

function privateFunction(){

return false;

}

//构造函数

MyObject = function (){};

//特权方法

MyObject.prototype.piblicMethod = function (){

privateVariable++;

return privateFunction();

}

})();

这个模式在定构造函数时并没有使用函数声明,而是使用函数表达式。

初始化未经声明的变量,总是会创建一个全局变量。因此Myobject成为一个全局变量。但是在严格模式下给未经声明的变量赋值会导致错误。

本文分享自微信公众号 - php(phpdaily)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2014-08-11

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • jQuery学习笔记

    jQuery大部分功能需要根据文档的DOM模型来工作,首先需要正确地解析到整个文档的DOM模型结构。使用jQuery需要在整个文档被浏览器完全加载后才开始进行。

    wangxl
  • PHP中的函数

    函数调用 function sum($x,$y) //形参:在声明函数时声明的参数 { // $x = 1; //如果在函数内对参数赋值,则会覆盖实参。...

    wangxl
  • Javascript权威指南学习总结

    1. 函数的定义总是覆盖变量的定义 function f(){     alert( 1111 ); } var f = 1; alert( f ); 此时输...

    wangxl
  • JavaScript Scoping and Hoisting

    当然,上面的代码会让浏览器弹出“1”。那么这中间究竟发生了什么?虽然这看起来似乎让人感到陌生,危险,困惑,但是这就是JavaScript语言的强大并富有表现力的...

    lesM10
  • JS中的闭包回顾

    在全局环境下,由于有变量提升这个机制在,所以在执行上下文环境中,数据体现的不尽相同:

    前端_AWhile
  • javascript基础详解-作用域

    JavaScript语言的作用域仅存在于函数范围中。这是必须要牢记的一点,还有一点重要的就是作用域的提升规则。

    用户2458785
  • webpack2 的 tree-shaking 好用吗?

    代码压缩的现状 下面是一个使用 react 的业务的代码依赖,但是实际上业务代码中并没有对依赖图中标识的模块,也就是说构建工具将不需要的代码打包到了最终的代码当...

    IMWeb前端团队
  • 函数声明与函数表达式

    函数声明:直接声明一个函数 function fnName() {};function声明必须有方法名,而出现在表达式里的方法名都会被忽略。

    meteoric
  • JavaScript函数及其prototype

    函数可以通过声明定义,也可以是一个表达式。 (1)函数声明式: 分号是用来分隔可执行JavaScript语句,由于函数声明不是一个可执行语句,所以不以分...

    奋飛
  • 【汇总】flash单个文件上传

    之前有朋友给我发送email,询问我是否有单个文件上传的源代码,因为当时写这个好像是在09年,所以放哪了一时也没找着。后来整理硬盘的时候,找到了源码,所以决定...

    meteoric

扫码关注云+社区

领取腾讯云代金券