JavaScript高级程序设计--第三章基本概念

1 语法

1.1 区分大小写

一切(变量名,函数名,操作符)区分大小写

1.2 标识符

第一个字符必须是字母,下划线或者$
其他字符可以是上述或数字

1.3 注释

// 单行注释 /**/多行注释

1.4 严格模式

不确定的行为将得到处理,不安全的操作会抛出错误
整个脚本采用严格模式,可以在顶部添加代码“use strict”;

1.5 语句

即使只有一行语句,也推荐使用代码块,可以减少出错几率

if(test){
	alert(test);
}

2 关键字和保留字

见P21

3 变量

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

var name="Harry Potter",
	age=11,
	address="Hogwarts";

4 数据类型

五种简单数据类型 Undefined, Null, Boolean, Number, String
一种复杂数据类型 Object
一种特殊情况: typedef null 会返回Object

4.1 undefined

未初始化的和未声明的变量 typeof 都返回undefined

4.2 Null

空对象指针,检查一个对象是否为空使用if(car != null)
alert(underfined == null) 输出的是true 因为undefined的值派生自null

4.3 Boolean类型

只有2个值:true or false(注意都是小写)
可以使用Boolean(message)转化为布尔值
注意自动转化的情况

if(message){
	alert("Value is true");
}
//一定要注意message会自动转化为对应的Boolean值,错误的使用一个对象可能影响应用程序

4.4 Number

浮点数计算精度问题
parseFloat(), parseInt()函数

4.5 String

string可以y用’或’'表示,但前后必须匹配(比如前面是单引号后面必须是单引号)

4.5.1 ecmascript字符串特点
var a = 'java';
a= a + "script";

这段代码后台执行过程 1 先创建一个能容纳10字符的字符串 2 在字符串中填充’java’和‘script’ 3 销毁原来的‘java’和’script’

4.5.2 转化为字符串

toString()方法:
javascript6种数据类型中,数值、布尔值、对象、字符串值都有toString()方法,null和undefined没有这个方法

String()方法:
有toString()方法,调用,没有则返回字面量(例如String(null)返回“null”)

4.6 Object

var o = new Object();

Object类型是所有它的实例的基础

5 操作符

会把非数值类型的转化为数值类型再计算

5.1 位操作符

有符号右移:使用符号位来填充所有的空位
无符号右移:用0填充所有空位,导致负数无符号右移后的数值非常大

5.2 乘性操作符

*(乘法)
结果为NaN的情况:
一个操作数是NaN
Infinity * 0

/(除法)
结果为NaN的情况:
一个操作数是NaN
Infinity/Infinity
0/0

5.3 关系操作符

"23"<"3" //true 字符串依次比较比较字符编码 "2"的字符编码小于"3"
"a"<3 //false
"a">=3 //false 比较时"a"被转化为NaN 任何操作数与NaN比较,结果都是false

5.4 相等操作符

为了保持代码中数据类型的完整性,推荐使用 全等(===)不全等(!==)

NaN == NaN //false
"5" == 5 //true,因为转换后相等
"5" === 5 //false,因为数据类型不同

6 语句

for-in 语句

forvar propName in window){
	document.write(propName);
}

label和break,continue来控制跳出循环

可以使用label跳出到外层循环外

var times=0;
outer:
for(var i=0;i<10;i++){
	for(var j=0;j<10;j++){
		if (i==2&&j==3){
			break outer;
		}
		times++;
	}
}
//运行后:times 23

switch

ecmascript中的switch可以使用任何数据类型,每个case的值可以是常量,变量表达式

function mNum(num){
	switch(num){
		case 1+3:
			console.log("4");
			break;
		case 5:
			console.log("5");
			break;
		default:
			console.log("unqualified");
	}
}
//mNum("5") result: unqualified
//mNum(4) result: 4
//mNum(5) result: 5

case的值可以是表达式;
switch比较值的时候用的是全等操作符,所以"5"不能匹配5

7 函数

无须指定函数的返回值,任何ecmascript函数都可以在任何时候返回任何值
实际上,未指定返回值的函数返回是一个特殊的undefined值

函数的参数在内部是用一个数组来表示的,函数接收到的始终是这个数组,而不关心数组中包含哪些参数(不管定义了几个参数,都可以传送0,1,2,3……个参数)

在严格模式下,重写arguments的值会发生语法错误。

javascript函数没有重载(因为没有函数签名 PS:签名指接受参数的类型和数量)
而通过检查传入函数中参数的类型和数量并作出不同反应,可以模仿方法的重载。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值