javascript 高级程序设计 五
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 高级程序设计 五的更多相关文章
- JavaScript高级程序设计(五): js的关键字instanceof和typeof使用
JavaScript中instanceof和typeof 常用来判断一个变量是否为空,或者是什么类型的.但它们之间还是有区别的: 一.typeof 1.含义:typeof返回一个表达式的数据类型的字符 ...
- 《Javascript高级程序设计》阅读记录(五):第六章 上
这个系列以往文字地址: <Javascript高级程序设计>阅读记录(一):第二.三章 <Javascript高级程序设计>阅读记录(二):第四章 <Javascript ...
- 《Javascript高级程序设计》阅读记录(三):第五章 上
这个系列以往文字地址: <Javascript高级程序设计>阅读记录(一):第二.三章 <Javascript高级程序设计>阅读记录(二):第四章 这个系列,我会把阅读< ...
- 《Javascript高级程序设计》阅读记录(四):第五章 下
这个系列,我会把阅读<Javascript高级程序设计>之后,感觉讲的比较深入,而且实际使用价值较大的内容记录下来,并且注释上我的一些想法.做这个一方面是提升了我的阅读效果以及方便我以后阅 ...
- 《JavaScript高级程序设计(第3版)》笔记-序
很少看书,不喜欢看书,主要是上学时总坐不住,没有多大定性,一本书可以两天看完,随便翻翻,也可以丢在角落里几个月不去动一下. 上次碰到了<JavaScript高级程序设计(第3版)>感觉真的 ...
- 《JavaScript高级程序设计》学习笔记(4)——引用类型
欢迎关注本人的微信公众号"前端小填填",专注前端技术的基础和项目开发的学习. 本节内容对应<JavaScript高级程序设计>的第五章内容. 在ECMAScript中, ...
- 《JavaScript高级程序设计》学习笔记
系统学习JS, 从<JavaScript高级程序设计>入门,通过学习jQuery或者angularJS源码来进阶. 第1章 JavaScript简介 1.JS问世的目的是处理以前由服务器端 ...
- JavaScript高级程序设计(第三版)学习笔记20、21、23章
第20章,JSON JSON(JavaScript Object Notation,JavaScript对象表示法),是JavaScript的一个严格的子集. JSON可表示一下三种类型值: 简单值: ...
- JavaScript高级程序设计(读书笔记)(一)
本笔记汇总了作者认为“JavaScript高级程序设计”这本书的前七章知识重点,仅供参考. 第一章 JavaScript简介 JavaScript发展简史: 1995年,JavaScript诞生 19 ...
随机推荐
- pycahrm 基础设置
一些常用设置: 1. pycharm默认是自动保存的,习惯自己按ctrl + s 的可以进行如下设置:1. file -> Setting -> General -> Synchro ...
- JAVA 实验报告
石家庄铁道大学信息科学与技术学院 实验报告 2018年----2019年 第一学期 题目: 四则运算.生成验证码 课程名称: JAVA语言程序设 ...
- tomcat支持 https
首先 安装nginx ,在nginx.conf 中引入 include /app/conf/nginx/vhosts/*.conf; 配置 并在conf/vhosts 目录 中配置virtual.c ...
- struts原理图
n the diagram, an initial request goes to the Servlet container (such as Jetty or Resin) which is pa ...
- Python算法(一)冒泡排序
3 5 1 6 2 1)第一次:找到这些数中最大的一个,并把它放最后. 3.5找到大的数放到第二个位置 5.1找到大的数放到第三个位置 5.6找到大的数放到第四个位置 2.6找到大的数放大第五个位置 ...
- Linux命令_1
文件和目录命令 从P19开始的笔记 目标 查看目录内容 ls 切换目录 cd 创建和删除操作 touch mkdir rm 拷贝和移动文件 cp mv 查看文件内容 cat more grep 其他 ...
- tomcat指向外部项目
参考 https://www.cnblogs.com/ysocean/p/6893446.html conf/server.xml中增加 <Context path="/myweb&q ...
- hbase备份数据与异地新建
hbase org.apache.hadoop.hbase.mapreduce.Driver export news /tmp/news1 备份news表至hdfs的/tmp目录下面. hadoop ...
- typedef void (*Fun) (void) 的理解——函数指针——typedef函数指针
首先介绍大家比较熟悉的typedef int i;//定义一个整型变量i typedef myInt int: myInt j;//定义一个整型变量j 上面介绍得是我们常用的比较简单的typedef的 ...
- 【mybatis基础】mybatis开发dao两种方法
mybatis是一个支持普通SQL查询,存储过程和高级映射的优秀的持久层的框架,是apache下的顶级项目.mybatis消除了几乎所有的JDBC代码和参数的手工设置以及对结果集的检索封装.mybat ...