资讯专栏INFORMATION COLUMN

JavaScript中定义变量时有无var的区别

wangbinke / 928人阅读

摘要:前段时间回答了一个关于定义变量时使用关键字与否的区别,总结回顾一下。在函数作用域内加定义的变量是局部变量,不加定义的就成了全局变量。使用定义变量还会提升变量声明,即使用定义不使用定义这就是使用定义的变量的声明提前。

前段时间回答了一个关于定义变量时使用关键字var与否的区别,总结回顾一下。
1.在函数作用域内 加var定义的变量是局部变量,不加var定义的就成了全局变量。
使用var定义:

var a = "hello World";
function bb(){
  var a = "hello Bill";
  console.log(a);   
}
bb()           //"hello Bill"
console.log(a);    //"hello world"

不使用var定义:

var a = "hello World";
function bb(){
  a = "hello Bill";
  console.log(a);   
}
bb()           //"hello Bill"
console.log(a);    //"hello Bill"

2.在全局作用域下,使用var定义的变量不可以delete,没有var 定义的变量可以delete.也就说明隐含全局变量严格来说不是真正的变量,而是全局对象的属性,因为属性可以通过delete删除,而变量不可以。
3.使用var 定义变量还会提升变量声明,即
使用var定义:

function hh(){
  console.log(a);
  var a = "hello world";
}
hh()           //undefined

不使用var定义:

function hh(){
  console.log(a);
  a = "hello world";
}
hh()           //"a is not defined"

这就是使用var定义的变量的声明提前。
4.在ES5"use strict"模式下,如果变量没有使用var定义,就会报错。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/90815.html

相关文章

  • Javascript定义变量时有var区别

    摘要:扒文,不谢,今天在回答了一个关于定义变量时使用关键字与否的区别,总结回顾一下。在函数作用域内加定义的变量是局部变量,不加定义的就成了全局变量。使用定义变量还会提升变量声明,即使用定义不使用定义这就是使用定义的变量的声明提前。 @krew http://webbought.github.io/ 扒文,不谢,O(∩_∩)O~ 今天在sf回答了一个关于定义变量时使用关键字var与否的区别,总...

    RobinQu 评论0 收藏0
  • JavaScript高级程序设计》笔记:基本概念

    摘要:一写在前面最近重读高级程序设计,总结下来,查漏补缺。但这种影响是单向的修改命名参数不会改变中对应的值。这是因为对象的长度是由传入的参数个数决定的,不是由定义函数时的命名参数的个数决定的。实际改变会同步,改变也会同步 一、写在前面 最近重读《JavaScript高级程序设计》,总结下来,查漏补缺。 二、JS简介 2.1 JS组成 ECMAscript:以ECMA-262为基础的语言,由...

    ygyooo 评论0 收藏0
  • JavaScript个人分享

    摘要:的基础语法的语法是区分大小写的注意在中是区分大小写的变量名称不能是中文代码示例一花一世界控制台调用效果图语法中的空格与换行注意并不是的语法内容可有可无的建议使用因为这样会使代码看的更清晰利于阅读代码示例代码一花一世界中的分号可选项语法并 JavaScript的基础语法: JavaScript的语法是区分大小写的 注意: 在JavaScript中是区分大小写的 变量名称不能是中文 代...

    JasonZhang 评论0 收藏0
  • 前端基础问题整理-JavaScript相关

    摘要:请解释事件代理事件代理也称为事件委托,利用了事件冒泡。同源指的是协议域名端口相同,同源策略是一种安全协议。目的同源策略保证了用户的信息安全,浏览器打开多个站点时,互相之间不能利用获取对方站点的敏感信息。 请解释事件代理(event delegation) 事件代理也称为事件委托,利用了事件冒泡。例如: item1 item2 item3 当页面li增多时单...

    刘东 评论0 收藏0
  • undefined与null区别

    摘要:目前,和基本是同义的,只有一些细微的差别。表示没有对象,即该处不应该有值。作为对象原型链的终点。五新增持续更新中一般是意外情况产生的,则是有意为对象赋值来说明这是一个空的对象的返回值是的类型是 摘自阮一峰博客,另附自己的理解分析。 大多数计算机语言,有且仅有一个表示无的值,比如,C语言的NULL,Java语言的null,Python语言的None,Ruby语言的nil。有点奇怪的是,J...

    defcon 评论0 收藏0

发表评论

0条评论

wangbinke

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<