第1章
1. 简介
JavaScript
:专为网页交互设计的脚本语言,包含三部分
ECMAScript
- 提供核心语言功能- 欧洲计算机制造商协会(ECMA,European Computer Manufacturers Association)
DOM
- 文档对象模型,提供访问和操作网页内容的方法和接口BOM
- 浏览器对象模型,提供与浏览器交互的方法和接口
第2章
1. <script>
元素
- 在使用
<script>
嵌入Js代码时,不要在代码的任何地方出现</script>
// 错误
alert("</script>")
// 正确
alert("<\/script>")
- 延迟脚本
defer
- 立刻下载js文件,但会在遇见</html>
后执行
<script type="text/javascript" defer="defer" src="example1.js"></script>
<script type="text/javascript" defer="defer" src="example2.js"></script>
- 异步脚本
async
- 立刻下载,异步加载页面的其他内容「
注:异步脚本不要在加载期间修改DOM
<script type="text/javascript" async src="example1.js"></script>
<script type="text/javascript" async src="example2.js"></script>
第3章
1.数据类型:
Undefined
Null
Boolean
Number
String
Object
2. typeof
与 Undefined
typeof 95 // Number
typeof(null) // Object
var age
typeof age // undefined
age == undefined // true
typeof mes; // 未进行声明的变量结果也是 undefined
undefined == null // true
3.Number
- 浮点数注意事项
// 浮点数的最高精度是17位小数
// 0.1 + 0.2 的结果是 0.30000000000000000000004
// 因此不能使用
// if (0.1 + 0.2 == 0.3)
isFinite
var res = Number.MAX_VALUE + Number.MAX_VALUE;
isFinite(res); // false
NaN
- 非数值
NaN == NaN; // false 与任何值都不相等,包括自己本身
isNaN(NaN); // true
isNaN(10); // false
isNaN("10"); // false
isNaN("blue"); // true 不能转换为数值类型
isNaN(true); // false 可以转换为1
- 数值转换
parse* 会忽略字符串的空格,直到找到第一个非空字符,如果不是数字或者负号 返回NaN
Number("hello") // NaN
Number("") // 0
Number("000011") // 11
Number(true) // 1
// 可以接受第二个参数( 以几进制解析)
parseInt("123blue") // 123
parseInt("") // NaN
parseInt("22.6") // 22
parseInt("AF", 16) // 175
parseInt("0xAF", 16) // 175
parseInt("AF") //NaN
// 不可接受第二个参数
parseFloat("1234aa") //1234 整数
parseFloat("22.5") //22.5
parseFloat("22.3.4.5") //22.3
parseFloat("3.125e7") //3125000
4. 位操作
- ECMAScript 中的所有整数都以 64 位存储,位操作不直接操作 64 位,而是先把其转为32,处理完再转回64。
- 前31位用来表示数值,32位表示符号
- 正数: 二进制码
- 负数: 二进制补码
(1)求这个数的绝对值的二进制码
(2)求反码 - 0替换为1, 1替换为0
(3)反码加1
~
非&
与|
或^
异或 相同(1,1)为0, 不同(1, 0)为1<<
左移 不会影响符号位>>
有符号右移>>>
无符号右移
5. label
语句
可用来退出多重循环
var num = 0;
out:
for (let i = 0; i < 10; i++) {
for (let j = 0; j < 10; j++) {
if(i==5 && j==5){
break out;
}
num++;
}
}
console.log(num); // 55
6.函数
- 所有的参数传递都是值, 不存在引用传递
- js函数没有重载,但是函数声明参数和调用时的参数不用对应,可以通过
arguments
来获取传过来的参数
function doAdd(){
if (arguments.length == 1){
return arguments[0]
}else if(arguments.length == 2){
return arguments[0] + arguments[1]
}
}
console.log(doAdd(3)); // 3
console.log(doAdd(3, 3)); // 6