JavaScript 引擎
- 一门编程语言必不可少的:变量,数据结构,函数,运算能力
- 单线程 ->模拟多线程
- 轮转时间片JS
- 短时间之内轮流执行多个任务的片段
- 任务一 ,任务二
- 切分任务一 ,任务二
- 随机排列这些任务片段,组成队列
- 按照这个队列顺序将任务片段送进JS进程
- JS进程执行一个又一个的任务片段
变量
- var 声明变量 var ->variable
var a; // 变量声明
a = 3; // 变量赋值
var b = 10; // 变量声明并赋值
// 两个部分组成
// 声明变量 变量赋值
var x = 10;
var y = 5;
var k = x + 5;// 15
// 运算优先级大于赋值
原始值
- 基本类型
- Number ,String,Boolean ,undefined,null
- js是根据值来判断数据类型 -- 弱类型语言
- 动态语言-> 脚本语言-> 解释型语言-> 弱类型语言
- 静态语言-> 编译型语言-> 强类型语言
引用值
- 常用引用值
- object ,array,function,date,RegExp
运算符
// + - * / % ()
// + 数学运算 字符串拼接
var a = 1,b = 2, c;
c = 1 + "str";
// 除法
c = 0 / 0; // NAN
c = 1 / NAN;//NAN
- 括号运算 > 普通运算 > 赋值
- 任何类型的值 + 字符串都是字符串
- 0 / 0 是 NAN -> not a number 是数字类型,本质是在计算之前那个计算的时候就已经得出非数的一个结果,在渲染的时候就会出现一个NAN。
// % 取余数
console.log(5 % 3);// 2
console.log(4 % 6);// 4
console.log(0 % 6);// 0
- 前面的数比后面的小就取前面的数。
比较运算符
- 返回bool值 :false | true
// > < >= <= == === != !==
var bool = 1 > "2";
// number - string string -> number
var boo = "a" > "b";// false
// 字符串象对应 ASCII (字符相对应的十进制代码)多个字符的,从左到右依次对比,直到比较出ASCII码的大小为止。
// == ===
var n = 1 == 1;// true
var a = 1 === "1";//false
// 相等是不看数据类型的,全等是要看数据类型是否相等
var f = 1 != 1;// false
var f1 = 1 !== "1"// true
var bool = NAN == NAN; // false
// NAN与 包括 自己 在内的任何类型都不相等
逻辑运算
- 与&& 或|| 非!
- 什么是假?
- undefined ,null,NAN,"",0,false
- 除掉上面全是真!
var a = 1 && 2; // 2
var w = 1 && 2 && 0 && 10; // 0
// 遇到真就往后走,遇到假或走到最后就返回当前的值
var b = 1 || 2; // 1
// 遇到假就往后走,遇到真了或者走到最后就返回当前的值
- 1 && 1 返回1 真
- 0 && 1 返回0 假
- 1 && 0 返回0 假
- 0 && 0 返回0 假
- 两个都为真才为真,有一个是假的就返回false。
- 1 || 1 返回1 真
- 0 || 1 返回1 真
- 1 || 0 返回1 真
- 0 || 0 返回0 假
- 两个有一个为真就为真,全为假才是假
var a = !2;// false
// 非0都是true 0 是false
a = !a; // 把非a赋值给a
a != a; // a 不等于 a