JavaScript 的怪癖 4:未知变量名创建全局变量
发布在JavaScript的12个怪癖(quirks)2013年11月5日view:3080
在文章任何区域双击击即可给文章添加【评注】!浮到评注点上可以查看详情。

原文:JavaScript quirk 4: unknown variable names create global variables

译者:justjavac


此文是 javascript 的 12 个怪癖(quirks) 系列的第四篇。

当你使用了一个未知的变量名,通常 JavaScript 会自动创建全局变量:

> function f() { foo = 123 }
> f()
> foo
123

好在你会在 ECMAScript5 的严谨模式得到警告[1]:

> function f() { 'use strict'; foo = 123 }
> f()
ReferenceError: foo is not defined

参考

  1. JavaScript’s strict mode: a summary
评论
发表评论
6年前

要避免这种情况,用严格模式挺不错的,but ie6、7、8不支持严格模式,所以,除了用严格模式,额又用jshint这种语法检查的编辑器插件,如果有这样写的,编辑器会提示,感觉这样更好。

WRITTEN BY
justjavac(迷渡)
☑辍学生 ☑极客 ☑码农 正在出版「代码之谜」,正在翻译「Javascript Quirks」。 http://justjavac.com
TA的新浪微博
PUBLISHED IN
JavaScript的12个怪癖(quirks)

实际上 javascript 是一个相当简洁的语言,但是也难免会有一些怪癖(quirks)。

本系列文章,需要您了解 ECMAScript 5 和 javascript 的基本知识,凡涉及到比较复杂的,文章中将会给出解释。

本系列文章托管在 github:https://github.com/justjavac/12-javascript-quirks,您可以通过 pull reqeust 的方式参与翻译。

参考资料:ECMAScript: ES.next versus ES 6 versus ES Harmony (中文)

我的收藏