JavaScript 的组成
- ECMAScript (ECMA 欧洲计算机制造联合会) 是 javascript 的核心
ECMAScript是一套JS语言设计标准,ECMAScript是JavaScript的语言规范,JavaScript是ECMAScript的实现和扩展。 - BOM - 浏览器对象模型
一套提供给程序员 操作浏览器功能 的API
alert()
通过BOM可以操作浏览器窗口,比如:弹出框、控制浏览器跳转、获取分辨率等 - DOM - 文档对象模型
一套提供给程序员 操作页面元素 的API
通过DOM提供的API可以对页面上的各种元素进行操作(大小、位置、颜色等)
script标签的属性
-
async 属性 表示异步加载,外部文件加载完以后就执行(不管当前页面有没有执行完)。
<script src="common.js" async></script>
-
defer 属性 表示延迟加载,拖到最后,等页面加载完以后执行。
<script src="common.js" defer></script>
js的命名
- 开头不能是数字,可以是字母,数字,下划线,$
- 不能是关键字和保留字
- 区分大小写
规范
- 变量的名称要有实际的意义
- 变量的命名要遵守驼峰命名法,首字母小写,第二个字母大写 userName
基本数据类型存储在栈里面
引用数据类型存储在堆里面
为什么基础数据类型存在栈中,而引用数据类型存在堆中呢?
- 堆比栈大,栈比对速度快。
- 基础数据类型比较稳定,而且相对来说占用的内存小。
- 引用数据类型大小是动态的,而且是无限的。
- 堆内存是无序存储,可以根据引用直接获取。
字符串的不可变性
所谓的不可变性是内容中的不可变性
字符串会重新开辟一个空间、
转化为字符串
var num = 1;
var bool = true;
console.log(num);
console.log(num.toString());
console.log(bool);
console.log(bool.toString());
//null和undefined 没有toString()
//String()
console.log(String(null));
console.log(String(undefined));
//隐式转化
var a = 123;
var b = a + '';
console.log(typeof b);
三元表达式
var sex =1;
//sex === 1 ? console.log('男') : console.log('女');
console.log(sex===1?'男':'女');
运算符的优先级
优先级从高到底
1. () 优先级最高
2. 一元运算符 ++ -- !
3. 算数运算符 先* / % 后 + -
4. 关系运算符 > >= < <=
5. 相等运算符 == != === !==
6. 逻辑运算符 先&& 后||
7. 赋值运算符
规律:
先一元 后 二元
先 算数 后 关系
数组的声明
var arr1 = new Array('a','b','c');
var arr2 = ['a','b','c'];
break 和 continue
- break
立即退出整个循环,执行循环后的语句。- 通俗: 吃5个包子,吃到第3个发现里面有半个虫子,其余的不吃了。
- continue
立即退出本地循环,但退出循环后会从循环的顶部继续执行该循环。- 通俗: 吃5个包子,第3个有虫子,就扔掉第3个,继续吃第4个第5个包子。
双重 for 循环
for (外循环的初始; 外循环的条件; 外循环的增量) {
for (内循环的初始; 内循环的条件; 内循环的增量) {
需执行的代码;
}
}
- 内层循环可以看做外出循环的语句。
- 内层循环执行的顺序也要遵循for循环的执行书序。
- 外层循环执行一次,则内层循环要执行全部次数(跑完毕)
for 循环 小结
-
for循环可以重复执行某些相同代码
-
for循环可以重复执行些许不同的代码,因为我们有计数器
-
for循环可以重复执行某些操作 比如 算术运算符 加法操作
-
随着需求增加,我们有双重for循环可以做更多,更好看效果
-
双重for循环,外层循环一次,里层for 循环全部。
-
for 循环 是 循环条件和数字 直接相关的循环