千家信息网

函数表达式-模仿块级作用域

发表于:2024-10-10 作者:千家信息网编辑
千家信息网最后更新 2024年10月10日,模仿块级作用域Javascript中没有块级作用域的概念,这意味着在块语句中定义的变量,实际上是在包含函数中而非语句中创建的1 function outputNumbers(count){2
千家信息网最后更新 2024年10月10日函数表达式-模仿块级作用域

模仿块级作用域

Javascript中没有块级作用域的概念,这意味着在块语句中定义的变量,实际上是在包含函数中而非语句中创建的

1     function outputNumbers(count){2         for (var i = 0; i < count; i++){3             console.log(i);4         }5         console.log(i);6     }

在for循环中定义的局部变量i可以再for循环外访问,因为变量i是定义在outputNumbers()的活动对象中的,因此从它有定义开始,就可以在函数内部随处访问它。

1     function outputNumbers(count){2         for (var i = 0; i < count; i++){3             console.log(i);4         }5         var i;6         console.log(i);7     }

遇到这种情况,他只会对后续的声明视而不见。匿名函数可以用来模仿块级作用域并避免这个问题。

1     (function(){2         //这里是块级作用域3     })();

以上代码定义并立即调用了一个匿名函数。将函数声明包含在一堆圆括号中,表示它实际上是一个函数表达式。而紧随其后的另一对圆括号会立即调用这个函数。

注意:

1     function(){2         //这里是块级作用域3     }(); //出错

function关键字表示一个函数声明的开始,而函数声明后面不能跟圆括号。然而,函数表达式的后面可以跟圆括号。要将函数声明转换成函数表达式。

无论在什么地方,只要临时需要一些变量,就可以使用私有作用域

1     function outputNumbers(count){2         (function(){3             for (var i = 0; i < count; i++){4                 console.log(i);5             }6         })();7         console.log(i); //i is not defined8     }

这种技术经常用在全局作用域中被用在函数外部,从而限制向全局作用域中添加过多的变量和函数

1     (function(){2         var now = new Date();3         if (now.getMonth() == 0 && now.getDate() == 1){4             alert("Happy new year");5         }6     })();

其中now现在是匿名函数中的局部变量,而我们不必在全局作用域中创建它。


函数 作用 变量 圆括号 表达式 全局 实际 实际上 局部 语句 中创 循环 视而不见 代码 关键 关键字 地方 对象 常用 情况 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 软件开发学英语软件 软件开发培训老师水平 系统管理员的服务器 cs架设服务器 关系数据库管理系统安全性 公司的网络安全第一责任人 网络安全第二版戚文静课后题 上海公安网安网络安全 四级报名未连接服务器 哪个学校招聘软件开发老师 网络安全警告验证服务器 法院网络安全隐患排查总结 怎么做简单软件开发 u8服务器如何查看开启的服务 网络技术工程师是做什么 软件开发本科和硕士薪资 软件开发管理工程师证 江西省网络安全技术试点 数据库错误4627怎么办 进口网络技术开发质量保证 魔兽世界正式服各服务器人口 2k22创建账号一直服务器不行 国家对企业网络安全强制要求 广东消防网络安全课 深圳交易所服务器在哪 法院网络安全保密查询 软件开发与设计设计目的 学生信息数据库设计基本需求分析 微软云服务器怎么登陆 历史数据库未启动
0