`

var全局变量声明方式区别

 
阅读更多

转载:http://www.nowamagic.net/librarys/veda/detail/1623

隐式全局变量和明确定义的全局变量间有些小的差异,就是通过delete操作符让变量未定义的能力。

  • 通过var创建的全局变量(任何函数之外的程序中创建)是不能被删除的。
  • 无var创建的隐式全局变量(无视是否在函数中创建)是能被删除的。

这表明,在技术上,隐式全局变量并不是真正的全局变量,但它们是全局对象的属性。属性是可以通过delete操作符删除的,而变量是不能的:

01 // 定义三个全局变量
02 var global_var = 1;
03 global_novar = 2;       // 反面教材
04 (function () {
05    global_fromfunc = 3; // 反面教材
06 }());
07  
08 // 试图删除
09 delete global_var;      // false
10 delete global_novar;    // true
11 delete global_fromfunc; // true
12  
13 // 测试该删除
14 typeof global_var;      // "number"
15 typeof global_novar;    // "undefined"
16 typeof global_fromfunc; // "undefined"

在ES5严格模式下,未声明的变量(如在前面的代码片段中的两个反面教材)工作时会抛出一个错误。

分享到:
评论

相关推荐

    javascript 显示全局变量与隐式全局变量的区别

    在JavaScript中,全局变量有两种声明方式 使用 var 显示声明的全局变量 不使用 var 声明的隐式全局变量 两者的区别在于是否能通过 delete 操作符删除 先看一段代码 var a = 'a'; // 显式声明的全局变量 b = 'b'; //...

    基于JavaScript 声明全局变量的三种方式详解

    使用var(关键字)+变量名(标识符)的方式在function外部声明,即为全局变量,否则在function声明的是局部变量。该方式即为显式声明详细如下: [removed] var test = 5;//全局变量 function a(){ var a = 3;//...

    javascript中局部变量和全局变量的区别详解

    首先,局部变量是指只能在本变量声明的函数内部调用。全局变量时整个代码中都可以调用的变量。当然,单单从字面上理解肯定是不清楚的,下面我详细的介绍下: 大家都知道,变量是需要用var关键字声明的。但是...

    JavaScript变量声明var,let.const及区别浅析

    var声明变量的作用域限制在其声明位置的上下文中 var x = 0; // x是全局变量,并且赋值为0。... // 全局变量x被赋值为3,不生成全局变量。 y = 4; // 已存在的外部函数的y变量被赋值为4,不生成新的全局变量。 z

    探讨JavaScript中声明全局变量三种方式的异同

    变量及变量声明是一门语言最基本的概念,初学者都会很快掌握。JavaScript中声明变量也是如此,很简单var(关键字)+变量名(标识符)。 方式1 var test;var test = 5;需注意的是该句不能包含在function内,否则是局部...

    浅析JavaScript预编译和暗示全局变量

    未声明的变量称为暗示全局变量。 var a = 1; //函数体外声明的变量称为全局变量 b = 2; // 无论函数体外或函数体内未声明的变量都称为暗示全局变量 function fn() { var c = 3; //函数体内声明的变量称为局部变量 ...

    JavaScript中变量声明有var和没var的区别示例介绍

    本文来论述JavaScript中变量声明有var和没var的区别,关于Js中的变量声明的作用域是以函数为单位,所以我们经常见到避免全局变量污染的方法是 (function(){ // ... })(); 在函数内部,有var和没var声明的变量是不...

    JS全局变量和局部变量最新解析

    var的规则是: 使用var声明变量就是内部变量, 否则就是先调用全局变量, 不管多少层函数. this的规则是: method函数里的this永远指向自身, 普通函数的this永远指向DOMWindow. // GodDamnTest1 function Foo() { var a...

    JavaScript的变量声明与声明提前用法实例分析

    使用var关键词声明变量的作用域是当前的执行上下文,有可能是外围函数,或者,当变量声明在函数体之外时,则为全局变量。 向一个未声明变量赋值会隐式地将其创建为一个全局变量(它变成了全局对象的一个属性)。声明...

    Web前端开发技术-认识函数作用域.pptx

    全局变量:不在任何函数内声明的变量(显示定义)或在函数内省略var声明变量(隐式定义)都称为全局变量。 作用范围:它在同一个页面文件中的所有脚本内都可以使用。 全局变量 2.全局变量和局部变量 认识函数作用域 ...

    AngularJS基于provider实现全局变量的读取和赋值方法

    本文实例讲述了AngularJS基于provider实现全局变量的读取和赋值方法。分享给大家供大家参考,具体如下: 简单全局变量的设置 1,通过var 直接定义global variable,这根纯js是一样的。 2,用angularjs value来设置...

    浅析JavaScript声明变量

    使用var关键词声明变量的作用域是当前的执行上下文,有可能是外围函数,或者,当变量声明在函数体之外时,则为全局变量。 定义在函数体外的都属于全局变量,定义在函数体内的属于局部变量。这里的定义是指通过var...

    windowify:与Browserify捆绑在一起时,允许常规JavaScript文件公开全局变量和函数

    与Browserify捆绑在一起时,允许常规JavaScript文件公开全局变量和函数。 我们可以找到以这种方式编写的旧代码: jquery.js: function jQuery ( selector ) { /* ... */ } test.js: var $element = jQuery...

    JavaScript var声明变量背后的原理示例解析

    只要是写过点JS代码,很简单一个var 就完事了。...在上面我明确定义了一个全局变量x,为何找不到? 那是因为:js编译器在执行这个y函数的时候,会把把它body里面的声明变量提前到最前面进行声明。比如:var x=2; 编译

    深入理解变量作用域

    比如给一个局部变量或者函数的参数声明的名字与某个全局变量名字一样的话,那么引用的就是那个局部变量或者函数的参数声明啦,间接隐藏了那个全局变量 var scope=”jquery”; function checkscope(){ var scope=”...

    ES6变量声明与赋值:值传递、浅拷贝与深拷贝详解

    在JavaScript中,基本的变量声明可以用var方式;JavaScript允许省略var,直接对未声明的变量赋值。也就是说,vara=1与a=1,这两条语句的效果相同。但是由于这样的做法很容易不知不觉地创建全局变量(尤其是在函数...

    详解js中let与var声明变量的区别

    ES6 新增了let命令,用来声明局部变量,所声明的变量,只在let命令所在的代码块内有效,而且有暂时性死区的约束。 1.ES6可以用let定义块级作用域变量 代码如下: function f1(){ { var a = 10; let b = 20; } ...

    JavaScript变量声明详解

    定义在函数体外的都属于全局变量,定义在函数体内的属于局部变量。这里的定义是指通过var声明...那么,隐式全局变量和明确定义的全局变量有没有区别呢。。答案肯定是有的,看下面的例子: 代码如下: // 定义三个全局变

    Javascript变量作用域详解

    (“函数外的称为全局变量”是相对的,另此处讨论的前提是用var显式声明的变量,函数内不用var定义的变量默认是全局变量,当然忽略var声明变量是不赞成的)。 代码如下:var glob = 4;//函数外声明全局变量 function ...

Global site tag (gtag.js) - Google Analytics