一、变量的定义及声明

在javascript中变量仅仅是用来保存值的一个占位符而已,定义变量时要使用关键字var后跟一个变量名,如下所示:

var  message;  //定义一个变量message,像这样未经初始化的变量,会保存一个一个特殊的值-undefined

var message='hi';  //定义一个变量并初始化

注意:

1、用var操作符定义的变量将成为该变量的作用域中的局部变量,也就是说,如果在该函数中使用var定义了一个变量,那么在该函数退出后将会被销毁。

2、可以省略var操作符,从而创建一个全局变量。如下所示:

function test(){
   message='hi';
}
test();
alert(message); //弹出hi

二、变量的作用域

1、全局变量/局部变量

变量分为全局变量和局部变量,全局变量拥有全局作用域,在javascript代码中的任何地方都是有定义的,局部变量是在函数内声明的变量。局部变量的优先级高于同名的全局变量。如果在函数内声明的局部变量或者函数参数中带有的变量和全局变量重名,那么全局变量就会被局部变量覆盖

2、函数作用域

(1)javascript中没有块级作用域,只有函数作用域:变量在声明他们的函数体以及这个函数体嵌套的任意函数体内都是有定义的。

(2)在javascript函数里声明的所有变量(但不涉及赋值)都被提前到函数体的顶部(声明提前).如下所示:

var scope="global";
function f(){
    console.log(scope);  //输出undefined,而不是global
    var scope="local"  ;
    console.log(scope);  //输出local
}
f(); 

上面一段代码等价于:

var scope="global";
function f(){
    var scope;  //声明提前,在函数体内声明的变量都提前至函数体顶部
    console.log(scope); //变量虽然存在,但是执行到这一步的时候,函数并未赋值
    scope="local"  ;
    console.log(scope);
}
f();

3、作用域链

JavaScript中,JavaScript里一切都是对象,包括函数。函数对象和其它对象一样,拥有可以通过代码访问的属性和一系列仅供JavaScript引擎访问的内部属性。其中一个内部属性是作用域,包含了函数被创建的作用域中对象的集合,称为函数的作用域链。

作用域链的用途,是保证对执行环境有权访问的所有变量和函数的有序访问。

未完待更新。。。。。。

JavaScript笔记:变量及其作用域的更多相关文章

  1. 从头开始学JavaScript (二)——变量及其作用域

    原文:从头开始学JavaScript (二)--变量及其作用域 一.变量 ECMAscript变量是松散型变量,所谓松散型变量,就是变量名称可以保存任何类型的数据,每个变量仅仅是一个用于保存值的占位符 ...

  2. JavaScript 中变量、作用域和内存问题的学习

    这是我学习JavaScript的第二篇文章,之前做过几年的Java开发,发现JavaScript虽然也是面向对象的语言但是确实有很多不同之处.就本篇博客,主要学习总结一下最近学习到的JavaScrip ...

  3. javascript之变量、作用域、作用域链

    一.变量 javascript的变量是松散类型的,所谓松散类型就是说定义的变量可以用来保存任何类型的数据.定义变量时要使用var操作符后面跟变量名.这里的var是一个关键字,如果定义变量时省略了var ...

  4. php学习笔记-变量的作用域

    这个东西很难理解,但很重要,我觉得非常容易出错. PHP中的变量按照作用域分为有两种,一种是global,一种是local. 函数内部声明的变量就叫local型变量,只能在函数内部被访问到.一句话,l ...

  5. JavaScript高级程序设计学习笔记--变量、作用域和内存问题

    传递参数 function setName(obj){ obj.name="Nicholas"; obj=new object(); obj.name="Greg&quo ...

  6. 《JavaScript高级程序设计》读书笔记 ---变量、作用域和内存问题小结

    JavaScript 变量可以用来保存两种类型的值:基本类型值和引用类型值.基本类型的值源自以下5种基本数据类型:Undefined.Null.Boolean.Number 和String.基本类型值 ...

  7. javascript学习笔记 - 变量、作用域和内存问题

    一 垃圾收集 javascript具有自动垃圾收集机制.由垃圾收集机制标找出不再使用的变量.按照固定间隔的时间进行销毁,释放内存.  1.找出不再使用的变量的方法,如下: 1-1.标记清除 垃圾回收器 ...

  8. javaScript之 变量、作用域和内存问题

    <javaScript高级程序设计>第四章  读书笔记 4.1  基本类型 和 引用类型 的值 1. 基本类型值 包括:Undefined.Null.Boolean.Number 和 St ...

  9. 【点滴javascript】变量与作用域

    基本类型与引用类型 ECMAScript的的变量有两种类型: 基本类型(值类型):简单数据段 引用类型:多个值构成的对象 在变量赋值结束后,解析器必须知道这个变量时基本数据类型还是引用类型,需要注意的 ...

随机推荐

  1. 人类大脑只开发了10%? I don't think so.

    既然程序执行时有些部分是彼此互斥的(在程序的一次执行中,执行了这部分就不会去执行另一部分),那么所谓的 人类大脑只开发了10%? 是不是其实只是程序互斥的一种体现. 而往往"智商" ...

  2. get_headers()函数

    get_headers() 是PHP系统级函数,他返回一个包含有服务器响应一个 HTTP 请求所发送的标头的数组.如果失败则返回 FALSE 并发出一条 E_WARNING 级别的错误信息(可用来判断 ...

  3. COCOS2D-X中UI动画导致闪退与UI动画浅析

    前两天和同事一起查一个游戏的闪退问题,log日志显示最后挂在CCNode* ActionNode::getActionNode()函数中的首行CCNode* cNode = dynamic_cast& ...

  4. [BZOJ 3682]Phorni

    后缀平衡树的模板题? I'm so weak…… 现在觉得替罪羊树比 treap 好写,是不是没救了喵- #include <cstdio> #include <cmath> ...

  5. linux find命令

    Linux中find常见用法示例 ·find   path   -option   [   -print ]   [ -exec   -ok   command ]   {} \; find命令的参数 ...

  6. MyBatis代码自动生成(利用eclipse插件)

    上一篇文章已经介绍了利用命令的方式自动生成mybatis代码,但是每次都去运行cmd命令感觉还是有点麻烦,所以找了些资料发现eclipse里面也可以安装插件自动生成代码,下面简单介绍一下,也是给自己以 ...

  7. Ubuntu16.04 安装配置Caffe

    Caffe已经是第三次安装配置了,为什么是第三次呢?因为我实在是低估了深度学习对于硬件的要求.第一次我在自己笔记本上配置的单核,CPU only ...  结果是,样例数据跑了4小时,这还怎么玩?第二 ...

  8. cygwin和mingw的区别

    之前由于做一些JNI的开发,安装了MinGW,最近有个项目需要用到cygwin,于是就有个疑问,这两个东西有什么区别?在网上看了些资料,在这里复制粘贴一下,以备后查. Unix下编译通过的C代码,在w ...

  9. LINQ、Lambda 的转换

    var d = from d1 in pDT1.AsEnumerable() from d2 in pDT2.AsEnumerable() where d1.Field<string>(& ...

  10. 在CentOS 6.x中支持exfat格式的U盘(移动硬盘)

    参考资料:http://linux.cn/article-1503-1.html CentOS系列一直没有默认支持使用exfat格式的大容量U盘(移动硬盘),但可以通过添加fuse-exfat模块来支 ...