前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >javascript模仿块级作用域

javascript模仿块级作用域

作者头像
wangxl
发布2018-03-07 11:01:56
6670
发布2018-03-07 11:01:56
举报
文章被收录于专栏:PHP在线PHP在线

模仿块级作用域

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成为一个全局变量。但是在严格模式下给未经声明的变量赋值会导致错误。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2014-08-11,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 php 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档