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)

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

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

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏程序猿DD

第一章 正则表达式字符匹配攻略

第一章 正则表达式字符匹配攻略 正则表达式是匹配模式,要么匹配字符,要么匹配位置。请记住这句话。 然而关于正则如何匹配字符的学习,大部分人都觉得这块比较杂乱。...

22710
来自专栏有趣的Python

5-Java基础语法-流程控制之循环结构

while循环;do-while循环;for循环;循环嵌套;break语句;continue语句

1591
来自专栏xx_Cc的学习总结专栏

iOS底层原理总结 - Category的本质

iOS底层原理总结 - Category的本质 面试题 Category的实现原理,以及Category为什么只能加方法不能加属性。 Category中有loa...

3536
来自专栏java达人

js的回调函数详解

在Javascript中,函数是第一类对象,这意味着函数可以像对象一样按照第一类管理被使用。既然函数实际上是对象:它们能被“存储”在变量中,能作为函数参数被传递...

2295
来自专栏desperate633

LeetCode 6. ZigZag Conversion分析代码

这道题就是要根据z字形遍历,我们模拟一遍过程可以发现遍历的规律,可以用循环解决,先遍历下去,又向上。然后重复这个步骤,向下,向上!

761
来自专栏卡少编程之旅

Javascript一些优雅实现

35011
来自专栏Felix的技术分享

霍夫曼压缩算法

2658
来自专栏iOS122-移动混合开发研究院

【读书笔记】A Swift Tour

素材:A Swift Tour 推荐下载Playground:Download Playground objc 自己较为熟悉,想熟悉下风头正劲的 swift。就...

3538
来自专栏待你如初见

Day01

不推荐使用强制的类型转换,它容易丢失数据,除非不得已,并且你确定不会出现数据丢失才可以使用。

1435
来自专栏机器学习与自然语言处理

04-树6. Huffman Codes--优先队列(堆)在哈夫曼树与哈夫曼编码上的应用

题目来源:http://www.patest.cn/contests/mooc-ds/04-%E6%A0%916 In 1953, David A. Huffm...

2377

扫码关注云+社区