一、JS为什么是单线程
- JS被设计为单线程是由其用途决定的
- 方便与用户互动
- 方便操作DOM
二、引用方式
- 外部引用
<script src='xxx'></script>
- 内部引用
<script>xxx</script>
(Ps:推荐将script标签放在body标签后,防止阻塞页面内容的渲染)
三、变量声明
直接打印变量
console.log(t1) // 报错 t1 is not defined
直接打印变量再声明
console.log(t1);
var t1 = 12; // undefined
所以其执行顺序为
- 先声明,在赋值即
var t1;
console.log(t1);
t1 = 12;
四、JS的数据类型
-
基本数据类型
- 数据保存在栈内存中,占用空间较小
1. Number 2. Bollean 3. Undefined 4. Null 5. String 6. Symbol
-
引用数据类型
- 数据保存在堆内存中,占用空间较大,变量保存的为引用类型数据的地址值
1. 对象:{}
2. 数组:[]
3. 函数:(){}
4.1 Number使用
- 整数判断
console.log(Number.isInteger(13.2)) // false
- 给出指定小数(满足四舍五入)
console.log(14.165.toFixed(1)); //14.2
- 判断是否是非数字类型
console.log(isNaN(12.33)); // false
- 注意:null,""会被认为是数字,因此使用时因予以屏蔽
4.2 String类型使用
-
字符串截取
- slice(start,end) 前闭后开
var a = "1ssda323"; var b = a.slice(0,-2); // 不包含最后一个索引值 console.log(b); // 1ssda3
-
去除两端空白
- trim() 去除前后空白,中间不会影响
var a = " 1ss da323 "; console.log(a.trim()); //1ss da323
-
分割字符串为数组,合并字符串数组
- split() 根据指定数据进行分割
var t = "2012-12-03"; console.log(t.split('-')); //['2012', '12', '03']
- join() 根据指定符号合并字符串数组
var t = "2012-12-03"; console.log(t.split('-')); console.log(t.split('-').join('/')); //2012/12/03
4.3 Boolean类型
所有的类型都可以隐式转换成Boolean类型的
ps:对象无论是否有值都是true
4.4 Null、Undifined与Symbol
-
Null\Undifined 基本同义
console.log(undefined == null); // true console.log(Number(null)); // 0 console.log(Number(undefined)); // NaN console.log(undefined+7); //NaN
- null 表示为空,因此其值为0,undefined为声明,因此为非数;
-
Symbol 指定为唯一属性(也即是允许名称重复)
// 在⼀个对象中需要增加⼀个相同的属性名 var dog = { feet: '1' }; var feet = Symbol('feet'); dog[feet]='4'; console.log(dog);