2015/11/25补充: 关于变量声明这里有详细的解释:

https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Statements/var

一个比较好的全面关于Javascript的文档说明. 推荐喜欢或正在学习Javascript的朋友每一个部分都

详细的看看. 之前很多模糊的概念都能在这里得到清晰的答案.

////////////////////////////////////////////////////////////////////////////////////////////////////////

Javascript声明变量时

var aaa = 111;

aaa = 111;

两种方式一样吗?

废话少说,先上代码.

var aaa = 11;

function test4(){
var aaa = 22;
} test4(); console.log(aaa);

结果是什么呢?

11

这个好理解, 函数内的var aaa声明是内部变量,这时结果是第一个aaa的值.

变动一下如下:

var abc = 11;

function test4(){
abc = 22;
} test4(); console.log(abc);

结果是什么呢?

22

再改:

function test4(){
var aaa = 22;
} test4(); console.log(aaa);

结果怎样? 运行报错了! ReferenceError: aaa is not defined!

改:

function test4(){
var aaa = 22;
} test4(); console.log(test4.aaa);

运行不会报错,输出结果是 undefined.

结论1: 函数或者对象构造内声明的变量是私有的. 外部无法访问到. 包括原型继承后的对象. 见前一篇文章.

可是如果这样:

function test4(){
bbb = 33;
} test4(); console.log(bbb);

结果是

33

点解?

这就是有var 和没有 var的声明的区别.

结论2: 不加var 在函数或者构造内就是赋值, 从函数内往上一层层寻找变量bbb,一直到顶层没有. 就在顶层声明一个 var bbb;

很可怕假如一个大的项目,在这里改变了bbb的值, 并没有添加var 碰巧整个项目全局变量有个同名bbb被改变,不加var不是只作用在这个函数或对象内. 出了错误很难找.

所以书写代码必须谨慎. 声明变量改加的就加不能怕麻烦. 结果是完全不同的.

追加:

2015-10-20

var 声明的全局变量。 和隐式声明(没有用var)声明的全局变量的区别:

var 声明的全局变量不能 delete  隐式声明的(没有用var)的可以使用delete删除掉。

 

javascript声明对象时 带var和不带var的区别的更多相关文章

  1. JS声明对象时属性名加引号与不加引号的问题

    般情况下属性名加引号和不加引号是都可以的,效果是一样的. var obj = { name : '你好', 'age' : 1, }; document.write( obj['name'] + '& ...

  2. C#在声明对象时对其赋值的一种方式

    今天学会一种更方便的赋值方式,如下, 同时存档一个通过 打开对话框 获取地址的方式. private string GetSaveAsPathXls(string defaultFileName) { ...

  3. Javascript声明和使用变量

    1.1变量的声明 要在程序中使用变量,就必须从声明变量学起,因为Javascript语法与我们基础的其他程序语言声明变量的方法略有不同,但是Javascript语法的变量应用非常强大,使用也非常简单. ...

  4. 样式声明对象:document.styleSheets[0].rules[4].style;

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  5. JavaScript基础对象创建模式之声明依赖模式(023)

    运用了命名空间(Namespace)模式后, 就可以使用一些JavaScript库了,比如YAHOO作用YUI2库的全局对象,可以通过 YAHOO.util.Dom 和 YAHOO.util.Even ...

  6. 为什么JavaScript声明变量的时候鼓励加var关键字

    在JavaScript中,var用来声明变量,但是这个语法并不严格要求,很多时修改,我们可以直接使用一个变量而不用var声明它. var x = "XX"; y ="xx ...

  7. 一文带你彻底理解 JavaScript 原型对象

    一.什么是原型 原型是Javascript中的继承的基础,JavaScript的继承就是基于原型的继承. 1.1 函数的原型对象 在JavaScript中,我们创建一个函数A(就是声明一个函数), 那 ...

  8. javascript jquery封装对象时的错误,求解!我想知道为什么

    jquery   封装对象时的错误 --------------------------------------------<input id="name" name=&qu ...

  9. JavaScript 中对象解构时指定默认值

    待解构字段为原始值 正常情况下, const obj = { a: 1, b: 2, }; const { a, b } = obj; console.log(a, b); // 1 2 当被解构字段 ...

随机推荐

  1. 齐博CMS:最常用的一些变量名,方便二次开发.必须要熟悉的

    ROOT_PATH程序所在硬盘目录的绝对地址,等同于以前的PHP168_PATH$webdb网站的全局变量,模块的全局变量也是这个$onlineip当前用户的IP$timestamp当前时间$WEBU ...

  2. c++中的类(class)-----笔记(类模板)

    1,一个模板类至少具有一个类参数,类参数是个符号以表示将要被某个确定数据类型代替的类型. #include<iostream> #include<string> using n ...

  3. zabbix监控指定端口

    生产上经常会监控某些具体端口状态,下面介绍具体步骤: 主机名 ip 操作系统 zabbix版本 zabbix-server 172.27.9.63 Centos7.3.1611 zabbix_serv ...

  4. as3.0加载swf并控制

    私人QQ 280841609 var myload:Loader=new Loader(); var url:URLRequest=new URLRequest("1.swf"); ...

  5. 二进制中1的个数(python)

    题目描述 输入一个整数,输出该数二进制表示中1的个数.其中负数用补码表示. # -*- coding:utf-8 -*- class Solution: def NumberOf1(self, n): ...

  6. 第十一章 串 (b1)串匹配

  7. NumPy 位运算

    NumPy 位运算 NumPy "bitwise_" 开头的函数是位运算函数. NumPy 位运算包括以下几个函数: 函数 描述 bitwise_and 对数组元素执行位与操作 b ...

  8. 支付宝小程序开发之与微信小程序不同的地方

    前言: 本文仅汇总微信小程序移植支付宝小程序过程中遇到的一些不同的地方,详细请参考官方开发文档. 网络请求: 对于网络请求,基本上改动不大,也就支付宝小程序没有responseType属性及响应码字段 ...

  9. elasticsearch查询语句总结

    query 和  filter 的区别请看:https://www.cnblogs.com/bainianminguo/articles/10396956.html Filter DSL term 过 ...

  10. 662. Maximum Width of Binary Tree二叉树的最大宽度

    [抄题]: Given a binary tree, write a function to get the maximum width of the given tree. The width of ...