第一章:JavaScript简介
JavaScript是一种专为与网页交互而设计的脚本语言。由ECMAScript , 文档对象模型(DOM)和浏览器对象模型(BOM)三部分组成.
第二章:在HTML中使用JavaScript
内敛:
<script type="text/javascript">
function sayHello(){
alert("hello");
}
</script>
外部:只会引用外部js代码
<script type="text/javascript" src="hihi.js"></script>
添加defer="defer"相当于告诉浏览器立即下载但延迟执行。延迟脚本
把脚本放在body最下边是最佳选择。
<srcipt>元素的async属性,只适用于外部文件。不让页面等待外部文件加载,异步加载页面的其他东西。异步脚本
可扩展超文本标记语言XHTML
文档模式doctype:混杂模式,标准模式。
若文档开始处没有文档类型声明则开始混杂模式<DOCTYPE! HTML>
第三章:基本概念
严格模式:
ECMAScript5引入的。启用严格模式在顶部添加代码"use strict"; 支持严格模式的有IE10+,Firefox5.1+,Opera12+,Chrome。
数据类型:
1.typeof操作符 返回"undefined"值未定义;返回"boolean"布尔值;返回"string"字符串;返回"number"数值;返回"object"为对象或
null(空指针);返回"function"值为函数。
2.undefined:只声明变量未赋值。
3.Null:只有一个值的数据类型,null空对象指针。undefined是派生自null值的,因此==判断时返回true。
4.Boolean:任何非空字符串=》true。
5.Number:八进制0(无效八进制解析为十进制),十六进制0x。
浮点数值:eg 0.1+0.2=0.30000000000000004 because并不是所有的十进制小数都能被二进制表示(在可取范围内)
JS不能处理所有的小数,其他使用相同数值格式的语言也存在这个问题
数值范围:超出js范围的值被保存为Infinity,判断数值是否有穷使用isFinite()函数。正数/0返回Infinity,负数返回-Infinity。
NAN:非数值,不影响代码执行,与任何值都不相等包括自己本身。isNAN()函数判断。0/0返回NAN
6.数值转换:
点击打开链接。
7.String类型:
字符字面量:eg ‘he said \'hey\'’
转换为字符串:toString()方法,null和undefined没有。String(),null返回“null” undefined返回“undefined”
8.Object类型:
constructor构造函数
hasOwnProperty(propertyName):用于检测给定的属性在当前对象实例中是否存在。
isPrototypeOf(object):传入对象是否传入对象原型
propertyIsEnumerable(propertyName)用于检测属性是否能用for-in语句
toLocaleString()返回对象字符串表示,与执行环境相对应
toString()
valueOf()返回字符串,数值或布尔值表示。
操作符:
一元操作符:递增递减,正负号。
位操作符:按位取非(~)按位与(&)按位或(|)按位异或(^)左移(<<)不会影响符号位,有符号右移(>>)无符号右移(>>>)
布尔操作符:逻辑非(!)同时使用两个逻辑非会模拟Boolean()转型函数,逻辑与(&&)短路逻辑,逻辑或(||)短路逻辑
乘性操作符:Infinity除Infinity结果是NAN,有一个操作数是NAN结果是NAN
关系操作符:注意字符串比较“23”<“3”
相等操作符:全等(===)两个操作数未经转换前就相等。不全等(!==)未经转换前就不相等
条件操作符:variable = boolean_expression
? true_value
: false_value;
赋值操作符:乘/赋值(*=)除/赋值(/=)模/赋值(%=)左移/赋值(<<=)有符号右移/赋值(>>=)无符号右移/赋值(>>>=)
逗号操作符:用于声明多个变量;
用于赋值(总是会返回表达式最后一项)
语句:
for-in:用来枚举对象属性
label语句:在代码中添加标签
break和contiune语句:
contiune表示从标签处继续。
var num=0;
outermost://标签
for(var i=0;i<10;i++){
for(var j=0;j<10;j++){
if(i==5&&j==5){
break outermost;//到outermost全部结束循环(直接结束两层循环)
}
num++;
}
}
alert(num;)//55
contiune表示从标签处继续。
with语句:严格模式下禁用。开发大型应用程序不建议使用。
switch语句:
switch (expression){
case value: statement;break;
case value: statement;break;
case value: statement;break;
case value: statement;break;
函数
function(参数){
.......
return ;//函数执行return后停止并立即退出
}
注意:不能把函数或参数命名为eval或arguments,参数不能同名。
arguments对象:函数体内部可以访问参数数组。arguments的值永远与对应的命名参数的值一样。修改arguments[0]也修改了第一个参数但内存空间是独立的(值同步,严格模式下不成立)。
通过arguments.length可以访问参数长度。
没有重载:定义两个名字相同的函数,名字只属于后定义函数。
通过检查传入函数中参数的类型和数量可以模拟重载,(提高程序适应性,便与函数在变化的环境中使用,提高代码复用性)