1、变量:

  ECMAScript中的基本类型都是值类型Boolean,Number,Null,Undefined和String,在这里JS和其他的语言有所不同,就是JS中的String是值类型

而不像其他语言一样String作为引用类型。在JS中引用类型的变量都可以动态的给他们赋值属性。如:

  var obj = new Object();

  obj.name = 'kim';

  alert(obj.name);//kim

还有一句话很重要:就是所有函数的参数都是按照值类型传递的。即使参数是一个引用类型的变量,也是按照值类型传递的,如:

  function setName(person){

    person.name = 'kim';

    persion = new Object();

    persion.name = 'jimmie';

  }

  var person = new Object();

  setName(person);

  alert(person.name);//kim(这里我也不是太明白,如果有那位大神看到了,请指点一下。万分感谢!!!)

如果我们要检测一个基本数据类型是那种类型那么我们最好使用typeof xxx 来检测,而如果要检测引用类型那么建议使用instanceof  yyy,

因为如果使用typeof检测引用类型,会出现:typeof null === 'object';type object === 'object',就是没有办法区分是那种引用类型。

2、作用域(执行环境)

  ECMAScript中执行环境就像java , c++等语言中的作用域类似,就是在执行环境中定义一些可供使用的变量和对象以及方法。在JS中

每一个执行环境都对应着一个对象,只是我们编码的时候不能访问到而已。

  ECMAScript中最大的执行环境就是全局执行环境,而是最外围的一个执行环境,根据ECMAScript中宿主环境的不同全局执行环境有所差别,

在浏览器中全局执行环境就是window对象。每一个函数有自己的执行环境,所以当进入一个执行环境的时候就会自动的定义一条执行链,链的前

端是最近的一个执行环境,而末端都是全局执行环境。

  ECMAScript中无论是函数中遇到一个变量(标示符),还是在全局中,都会自动的根据执行链上的顺序依次的从相应的执行环境中查找是否定义

了相应的标示符,所以函数中的变量会先在自己的执行环境中进行查找是否定义了这个变量,如果没有则会在外层函数中查找,直到最后的全局

环境变量中。

  var color = 'blue';

  function changeColor(){

    var anotherColor = 'red';

    function swapColor(){

      var tempColor = 'green';

      anotherColor = color;

      color = tempColor;

      //这里可以访问color,anotherColor,tempColor

    }

    //这里可以访问color,anotherColor但是不能访问tempColor

    swapColors();

  }

  //这里只能访问color------这就是所谓的闭包

  changeColor();       

javascript 高级程序设计 五的更多相关文章

  1. JavaScript高级程序设计(五): js的关键字instanceof和typeof使用

    JavaScript中instanceof和typeof 常用来判断一个变量是否为空,或者是什么类型的.但它们之间还是有区别的: 一.typeof 1.含义:typeof返回一个表达式的数据类型的字符 ...

  2. 《Javascript高级程序设计》阅读记录(五):第六章 上

    这个系列以往文字地址: <Javascript高级程序设计>阅读记录(一):第二.三章 <Javascript高级程序设计>阅读记录(二):第四章 <Javascript ...

  3. 《Javascript高级程序设计》阅读记录(三):第五章 上

    这个系列以往文字地址: <Javascript高级程序设计>阅读记录(一):第二.三章 <Javascript高级程序设计>阅读记录(二):第四章 这个系列,我会把阅读< ...

  4. 《Javascript高级程序设计》阅读记录(四):第五章 下

    这个系列,我会把阅读<Javascript高级程序设计>之后,感觉讲的比较深入,而且实际使用价值较大的内容记录下来,并且注释上我的一些想法.做这个一方面是提升了我的阅读效果以及方便我以后阅 ...

  5. 《JavaScript高级程序设计(第3版)》笔记-序

    很少看书,不喜欢看书,主要是上学时总坐不住,没有多大定性,一本书可以两天看完,随便翻翻,也可以丢在角落里几个月不去动一下. 上次碰到了<JavaScript高级程序设计(第3版)>感觉真的 ...

  6. 《JavaScript高级程序设计》学习笔记(4)——引用类型

    欢迎关注本人的微信公众号"前端小填填",专注前端技术的基础和项目开发的学习. 本节内容对应<JavaScript高级程序设计>的第五章内容. 在ECMAScript中, ...

  7. 《JavaScript高级程序设计》学习笔记

    系统学习JS, 从<JavaScript高级程序设计>入门,通过学习jQuery或者angularJS源码来进阶. 第1章 JavaScript简介 1.JS问世的目的是处理以前由服务器端 ...

  8. JavaScript高级程序设计(第三版)学习笔记20、21、23章

    第20章,JSON JSON(JavaScript Object Notation,JavaScript对象表示法),是JavaScript的一个严格的子集. JSON可表示一下三种类型值: 简单值: ...

  9. JavaScript高级程序设计(读书笔记)(一)

    本笔记汇总了作者认为“JavaScript高级程序设计”这本书的前七章知识重点,仅供参考. 第一章 JavaScript简介 JavaScript发展简史: 1995年,JavaScript诞生 19 ...

随机推荐

  1. C# 计算接口调用时长

    //获取 接口的数据 Stopwatch sw = new Stopwatch();//计算耗时 sw.Start();fn1();//接口调用方法 sw.Stop();return JsonMsg. ...

  2. jdk动态代理和cglib动态代理

    参考: http://www.importnew.com/22015.html Java动态代理 上面的代码运行的结果为: I'm proxy! Welcome oschina hosee's blo ...

  3. js 乘法 4.39*100 出现值不对问题解决

    https://www.jianshu.com/p/a026245661bb //除法函数,用来得到精确的除法结果 //说明:javascript的除法结果会有误差,在两个浮点数相除的时候会比较明显. ...

  4. HTML 设置字体

    HTML,CSS,font-family:中文字体的英文名称 (宋体 微软雅黑)     宋体 SimSun 黑体 SimHei 微软雅黑 Microsoft YaHei 微软正黑体 Microsof ...

  5. 用R理解统计学

    1.随机变量( random variable)概念的引入 该数据来自杰克逊实验室.2组数据,每组12只老鼠,一组普通食物,另一组高脂肪(hf)饮食.几周后,科学家们称了每只老鼠的体重,得到了这个数据 ...

  6. chromedriver和chrome匹配的版本

  7. 设置,获取,删除cookie

    function setCookie(key,value,options){ if (value !== undefined ) { if(options === undefined || optio ...

  8. Java读取文件时第一行出现乱码“?”问号

    我们在使用Java在读取文件(txt.dat等)时,如果文件不是utf-8格式的话,读取结果会出现,中文字符变乱码的情况,所以一般在读取时转为UTF-8格式读取. 但这时会出现一种情况,第一次读取第一 ...

  9. 关于C/s结构 本地目录的思考

    对于一般客户而言,程序使用时,查看本地目录下的对应内容. 如果有则正常使用.实际上相当于缓存,加快程序执行速度. 如果缓存里没有东西,比如被删除了,那么就在数据库中查找.然后生成缓存. 这样的好处,是 ...

  10. 模拟银行业务的JS实现

    /*开户.存款.挂失.补卡.取款.转账.余额查询.密码修改.交易查询.锁定账号.解锁账号等*//*C#第7天 请参考by-Qy*/ using System;using System.Collecti ...