JavaScript高级程序设计

1. 变量

javascript中的变量是松散型,可以用来保存任何类型的数据。

用var操作符定义的变量将成为定义该变量的作用域中的局部变量。

省略var操作符后可以创建一个全局变量。(不推荐)

可以使用一条语句定义多个变量:

var message = "hi",
    found = false;
    age = 26;

2. 数据类型

简单数据类型:undefined, Null, Boolean, Number, String.

复杂数据类型:Object。 Object本质上是由一组无序的名值对组成的。

  • typeof 检测给定变量的数据类型,是一个操作符而不是函数
  • Undefined 包含undefined值得变量与尚未定义的变量不一样:
var message;
alert(message); //undefined
alert(age);       // 发生错误
  • Null 如果定义的变量准备在将来用于保存对象,那么最好将该变量初始化为null而不是其它值。
  • Boolean 该类型只有两个字面值:true和false。虽然字面值只有两个,但可以对任何数据类型的值调用Boolean函数,就会返回一个Boolean值。

转化为true的:

  Boolean(任何非空字符串)

  Boolean(任何非零数字值)

  Boolean(任何对象)

转化为false的:

  Boolean("")

  Boolean(0 和 NaN)

  Boolean(null)

  Boolean(undifined)

  • Number

Number采用的是IEEE 754 64位双精度浮点数编码。

八进制字面值的第一位必须是0,然后是八进制数字序列(0-7)。如果字面值中的数字超过7,那么第一个0会被忽略,后面的数值将被当作十进制数值解析。

var num1 = 070; // 八进制56
var num2 = 079; // 无效的八进制,转化为十进制79
var num3 = 08;  // 无效的八进制,转化为十进制8

十六进制字面值的前两位必须是0x.

在进行算术计算时,所有以八进制和十六进制表示的数值最终都将被转换为十进制数值。

浮点数的最高精度是17位小数。3.125e7 = 3.125 * 10^7.

4, 由于ECMAScript中不存在块级作用域,因此在循环内部定义的变量也可以在外部访问到。

5,with语句

  with语句的作用是将代码的作用域设置到一个特定的对象中:with(expression) statement;

var qs = location.search.substring(1);
var hostname = location.hostname;
var url = location.href;

使用with后:

with(location) {
    var qs = search.substring(1);
    var hostname = hostname;
    var url = href;
}

上例中,使用with语句关联了location对象,这意味着在with语句的代码块内部,每个变量首先被认为是一个局部变量,而如果在局部环境中找不到该变量的定义,就会查询location对象中是否有同名的属性。如果发现了同名属性,则以location对象属性的值作为变量的值。

6, switch语句

可以在switch语句中使用任何数据类型,无论是字符串还是对象都没有问题。

7, 函数

  ECMAScript函数不介意传递进来多少个参数,也不在乎传进来的参数时什么数据类型。原因是ECMAScript中的参数在内部是用一个数组来表示的,函数接受到的是中都是这个数组,而不关心数组中包含哪些参数。

  

时间: 2024-10-08 04:05:50

JavaScript高级程序设计的相关文章

JavaScript高级程序设计之函数

函数实际上是对象,每个函数都是Function类型的实例. 函数是引用类型. 函数名实际上是一个指向函数对象的指针,不会与某个函数绑定. // 这种写法更能表达函数的本质 var sum = function(num1, num2) { return num1 + num2; }; var anotherSum = sum; sum = null; console.log(anotherSum(10, 20)); // 30 console.log(sum(10, 20)); // typeer

javascript高级程序设计--简介

工作一年多了,这一年的收获真是丰富.结识了许多同事朋友,技术网友,学了许多新的技术知识:当然还要感谢我的朋友们,感谢我的第一家公司. 大学主要学的.net,刚毕业那会对javascript的了解几乎就是空白,后来有机会接触了百度地图,开始了javascript学习之路.现在在项目中也能熟练的使用javascript,jquery等技术,可总感觉缺点什么,有些东西你知道是什么,也能写出来,但就是不知道他是什么,他的原理是什么样的.所以才有了现在的想法,系统的学习一遍javascript.---文笔

《Javascript高级程序设计》阅读记录(二):第四章

这个系列之前文字地址:http://www.cnblogs.com/qixinbo/p/6984374.html 这个系列,我会把阅读<Javascript高级程序设计>之后,感觉讲的比较深入,而且实际使用价值较大的内容记录下来,并且注释上我的一些想法.做这个一方面是提升了我的阅读效果以及方便我以后阅读 另一个目的是,Javascript高级程序设计这本书内容很多也很厚,希望其他没有时间的人可以通过看这系列摘录,就可以大体学到书里面的核心内容. 绿色背景的内容是我认为比较值得注意的原著内容.

javascript高级程序设计 第十四章--表单脚本

javascript高级程序设计 第十四章--表单脚本 在HTML中表单由<form>元素表示,在js中表单对应的是HTMLFormElement类型,这个类型也有很多属性和方法:取得表单元素的引用还是为它添加id特性,用DOM操作来获取表单元素:提交表单:把<input>或<button>元素的type特性设置为"submit",图像按钮把<input>元素的type特性设置为"image",也可以调用submit(

javascript高级程序设计 第十三章--事件

javascript高级程序设计 第十三章--事件js与HTML的交互就是通过事件实现的,事件就是文档或浏览器窗口中发生的一些特定的交互瞬间. 事件流:事件流描述的是从页面中接收事件的顺序,IE的是事件冒泡流,Netscape的是事件捕获流,这个两个是完全相反的事件流概念. 事件冒泡:由最具体的元素接收,然后逐级向上传播到更高级的节点,即事件沿DOM树向上传播,直到document对象. 事件捕获:不大具体的节点应该更早接收到事件,相当于沿DOM节点树向下级传播直到事件的实际目标,在浏览器中,是

javascript高级程序设计 第十一章--DOM扩展

javascript高级程序设计 第十一章--DOM扩展DOM最主要的扩展就是选择符API.HTML5和Element Traversal Selectors API:定义了两个方法 querySelector() 和 querySelectorAll(),能够基于CSS选择符从DOM中取得元素.querySelector()方法接收一个CSS选择符,返回该模式匹配的第一个元素,querySelectorAll()接收的参数一样,但是返回NodeList实例: matchesSelector()

javascript高级程序设计 第九章-- 客户端检测

javascript高级程序设计 第九章-- 客户端检测 客户端检测是javascript开发中最具争议的一个话题,由于浏览器间存在差别,通常需要根据不同浏览器的能力分别编写不同的代码.有下列常使用的客户端检测方法:能力检测:在编写代码之前先检测特定浏览器的能力.例如,脚本在调用某个函数之前,可能要先检测该函数是否存在.这种检测方法将开发人员从考虑具体的浏览器类型和版本中解放出来,让他们把注意力集中到相应的能力是否存在上.能力检测无法精确地检测特定的浏览器和版本.怪癖检测:怪癖实际上是浏览器中存

《JavaScript高级程序设计》学习笔记(5)——面向对象编程

欢迎关注本人的微信公众号"前端小填填",专注前端技术的基础和项目开发的学习. 本节内容对应<JavaScript高级程序设计>的第六章内容. 1.面向对象(Object-Oriented, OO)的语言有一个标志,那就是它们都有类的概念,而通过类可以创建任意多个具有相同属性和方法的对象.前面提到过,ECMAScript中没有类的概念,因此它的对象也与基于类的语言中的对象有所不同. ECMA-262把对象定义为:"无序属性的集合,其属性可以包含基本值.对象或者函数.

赠书《JavaScript高级程序设计(第三版)》5本

本站微博上正在送书<JavaScript高级程序设计>走过路过的不要错过,参与方式,关注本站及简寻网+转发微博:http://weibo.com/1748018491/DoCtp6B8r 本站联合简寻网#寻找千里码# 正在送书<javascript高级程序设计>第三版 5本,对这本书期待的朋友可以去参与哦. 关于简寻网: 我们是一群年轻的创业者,我们关注互联网发展,追逐技术的进步.互联网时代的到来,我们希望能通过技术的手段解决生活中的问题.招聘行业是一个传统而又新兴的行业,传统的流

JavaScript高级程序设计(第三版)学习,第一次总结

Array类型 var arr = []; arr.length; //返回数组元素个数 改变length可以动态改变数组大小 检测数组 instanceof可以检测某个对象是否是数组,限制:只能是一个网页或一个全局作用域 Array.isArray(arr); //最终确定某个值到底是不是数组,没有限制 转换方法 arr.toString(); //返回由数组每个值的字符串形式拼接而成的以逗号分隔的字符串 arr.valueOf(); //与toString方法一致 arr.toLocalSt