`

JavaScript 的怪癖 4:未知变量名创建全局变量

 
阅读更多

原文: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

分享到:
评论

相关推荐

    JavaScript程序设计课件:变量.pptx

    - 不建议使用JavaScript的保留字作为变量名,例如 `for`, `if`, `else` 等,因为它们有特殊的语义。 - 变量名是大小写敏感的,`myVariable` 和 `myvariable` 是两个不同的变量。 - 推荐使用驼峰命名法(camelCase...

    JavaScript程序设计课件:变量的作用范围.pptx

    在JavaScript中,变量的作用范围分为两种主要类型:全局作用域和局部作用域。 1. 全局作用域(Global Scope): 全局变量是在函数外部定义的变量,或者在脚本的顶层定义的变量。它们在整个脚本或JavaScript文件中都...

    全局变量的控制与修改:在函数中操作全局变量的技巧

    全局变量是编程中一个双刃剑,它为程序提供了极大的灵活性,同时也可能导致代码难以理解和维护。在许多编程语言中,全局变量可以在程序的任何地方被访问和修改。本文将探讨如何在函数中修改全局变量,包括这种做法的...

    javascript全局变量说明示例

    看看有帮助,全局变量,与局部变量的差异!

    JavaScript:变量与数据类型

    - **命名规则**:变量名必须以字母、下划线(_)或美元符号($)开头,后面可以跟字母、数字、下划线或美元符号。 - **注意事项**:变量名是区分大小写的,因此 `myVariable` 和 `MyVariable` 是两个不同的变量。 *...

    浅谈JavaScript的全局变量与局部变量_.docx

    为了防止全局变量污染和提升代码质量,可以考虑使用立即执行的函数表达式(IIFE, Immediately Invoked Function Expression),这样可以在函数内部创建私有作用域,避免了全局变量的创建。例如: ```javascript ...

    JavaScript全局变量的本质及页面共享问题 -页面

    JavaScript全局变量的本质与页面共享问题是一个重要的编程概念,尤其是在网页开发中。JavaScript是一种广泛使用的脚本语言,它的全局变量在程序中的角色独特,且与页面的生命周期和浏览器环境紧密相关。 首先,我们...

    深入JavaScript严格模式:最佳实践与应用指南

    - **禁止隐式全局变量**:阻止未经声明的变量赋值,防止意外地创建全局变量。 - **函数调用的严格性**:限制使用`arguments.callee`和`arguments.caller`等可能引发性能问题的属性。 - **禁止使用`with`语句**:因为...

    JavaScript模块化:深入理解和实践

    2. **基于对象**:虽然不是面向对象的语言,但JavaScript支持对象的创建和操作。 3. **自动内存管理**:具有垃圾回收机制,自动回收不再使用的对象所占用的内存。 4. **动态类型**:变量的类型在运行时确定,不需要...

    javascript 用局部变量来代替全局变量第1/2页

    为了提升性能,减少潜在的命名冲突,并且遵循最佳实践,推荐在JavaScript中尽可能使用局部变量来代替全局变量。这一点在众多开发者的共识中已经成为一个基本规则。Nicholas C. Zakas是这一建议的早期倡导者之一,他...

    JavaScript:变量与数据类型.docx

    JavaScript:变量与数据类型.docx

    深入理解JavaScript系列

    - **链的最顶端**:全局执行上下文。 #### 十五至五十及结局篇 从第十五篇开始,汤姆大叔详细介绍了JavaScript中的各种功能特性、设计模式以及代码组织方式等内容。这些内容覆盖了从基本概念到高级应用的各个方面...

    JavaScript 最佳实践:帮你提升代码质量

    有时候即使你不想这样做,但也有可能会定义出全局变量。在如今的浏览器中,全局变量都被存储在 window 对象中。而因为有许多的东西都在那个里面,所以你有可能把一些默认值都给覆盖掉了。  假设你有一个 HTML 文件...

    JavaScript语言教程.docx

    JavaScript是一种轻量级的编程语言,广泛用于网页和前端开发,以创建交互式的网页。自1995年诞生以来,JavaScript已成为最流行的编程语言之一,不仅限于浏览器,还扩展到了服务器端(如Node.js)和其他平台。 ### ...

    vue2 全局变量的设置方法

    Vue2 中设置全局变量有两种方法:全局变量专用模块和全局变量模块挂载到 Vue.prototype 里。 1. 全局变量专用模块 全局变量专用模块是以一个特定模块来组织管理这些全局量,需要引用的地方导入该模块便好。例如,...

    深入理解JavaScript系列(12) 变量对象(Variable Object)

    实际上是在全局对象上创建了一个名为a的属性,其值为10。 2. 函数上下文中的变量对象:当一个函数被调用时,一个活动对象(Activation Object, AO)会被创建,它作为变量对象来使用。活动对象除了存储变量和函数...

    01 JavaScript基本语法.ppt

    JavaScript 中声明变量:var 变量名 "+"可以用于两个数相加,还可以用于连接字符串 parseInt() 和 parseFloat() 函数将字符串分别转换为整型和小数 运算符号分为算术运算符、比较运算符、逻辑运算符 分支结构 条件...

    [JavaScript权威指南(第6版)].(JavaScript:The.Definitive.Guide).David.Flanagan.文字版.pdf

    - **作用域**: JavaScript有全局作用域、函数作用域和块级作用域。 通过以上知识点的梳理,我们可以看到《JavaScript权威指南》第6版涵盖了从基础语法到高级特性的全面内容,对于希望深入了解JavaScript及其在Web...

    javascript-cheatsheet:了解JavaScript的基本术语,概念和语法

    :fire: JavaScript备忘单 :world_map: 这是JavaScript基本概念的备忘单。... 第7页:创建变量的方法-var,let,const +事件循环PNG , PDF 第8页:浏览器PNG , PDF 第9页:DOM-查询,创建,更新,删除,DOM PNG和P

Global site tag (gtag.js) - Google Analytics