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. typora中文版官方免费快速下载以及Markdown的一些常用语法、Java知识点

    typora下载 链接:https://某度云盘的域名/s/1geD1APxnyV3gogYW3E08bQ 密码:8fdp 把某度云盘的域名进行替换 1.标题 # 标题1 ## 标题2 ### 标题3 ...

  2. java语言 找出文章中出现次数最多的单词

    package english; import java.io.File; import java.util.Scanner; import java.io.FileNotFoundException ...

  3. AJAX简单实例

    越用AJAX越觉得它的强大.好用. 平常我们提交表单,是直接通过action属性,直接向后台提交数据. 我们也可以用AJAX向后台提交数据.例如: 这是一个表单,两个字段:notice,scort,保 ...

  4. Jetty 与 Tomcat 的比较

    Tomcat 和 Jetty 都是作为一个 Servlet 引擎应用的比较广泛,可以将它们比作为中国与美国的关系,虽然 Jetty 正常成长为一个优秀的 Servlet 引擎,但是目前的 Tomcat ...

  5. Choosing the Type at Runtime

    [Choosing the Type at Runtime] You cannot use a general expression as the React element type. If you ...

  6. 每月IT摘录201812

    技术 1.JVM.Java并发.NIO.网络通信,这些都是一个java工程师必须具备底层技术素养. 2.关于技术广度.消息中间件.分布式缓存.海量数据.分布式搜索.NoSQL.分布式架构.高并发.高可 ...

  7. JAVA 基本数据结构--数组、链表、ArrayList、Linkedlist、hashmap、hashtab等

    概要 线性表是一种线性结构,它是具有相同类型的n(n≥0)个数据元素组成的有限序列.本章先介绍线性表的几个基本组成部分:数组.单向链表.双向链表:随后给出双向链表的C.C++和Java三种语言的实现. ...

  8. Shell教程 之test命令

    Shell中的 test 命令用于检查某个条件是否成立,它可以进行数值.字符和文件三个方面的测试. 1.数字测试 参数 说明 -eq 等于则为真 -ne 不等于则为真 -gt 大于则为真 -ge 大于 ...

  9. use crunch compression

    Crunch is a lossy compression format on top of DXTR texture compression. Textures will be converted ...

  10. Quagga的安装和使用

    Quagga的安装和使用 测试环境:VM 12   CentOS 6.5 64位 Quagga是一款功能比较强大的开源路由软件,支持rip, ospf,bgp等协议. 1.       Quagga的 ...