一、主流浏览器及内核
IE ==> trident
Chrome ==> webkit / blink
Firefox ==> Gecko
Opera ==> presto
Safari ==> webkit
二、变量命名规则
- 变量名必须以
英文字母
、_
、$
开头 - 变量名可以包括
英文字母
、_
、$
、数字
- 不可以用系统的关键字、保留字作为变量名
三、值类型(数据类型)
JavaScript 的数据类型,共有六种。(ES6 又新增了第七种 Symbol 类型的值。)
数值(number)
、字符串(string)
、布尔值(boolean)
、undefined
、null
、对象(object)
按内存中存储形式分为
1、不可改变的原始值(栈数据 stack)
Number、Boolean、String、undefined、null
2、引用值(堆数据 heap)
Array、Object、function、Date、RegExp……
typeof 运算符可以返回一个值的数据类型。
数值、字符串、布尔值分别返回number、string、boolean。
函数
返回 function
undefined 返回 undefined
null 返回 object
NaN 返回 number
document.write(typeof undefined); //undefined
document.write(typeof null); //object
document.write(typeof NaN); //number
四、运算符
1、任何数据类型 +
字符串都等于字符串
2、NaN
是 JavaScript 的特殊值,表示“非数字”(Not a Number
)。NaN
不等于自身NaN==NaN //false
3、括号()
优先级最高,=
优先级最弱
五、逻辑运算符
undefined
、null
、NaN
、''
(空字符串)、0
、false
六个值 转换成布尔值都是false
,其他为ture
1)与 &&
从左到右执行判断两边的表达式,如左边表达式为ture
,则执行右边表达式并返回右边表达式的值
;
var a = 1 && 1+1
document.write(a); //2
如左边表达式为false
,则直接返回左边表达式的值
,不再执行
右边表达式进行判断
var b = 0 && document.write(111);
document.write(b); //0
2)或 ||
从左到右执行判断两边的表达式,如左边表达式为ture
,则直接返回左边表达式的值
,不再执行
右边表达式进行判断;
var a = 1 + 1 || 2 + 3;
document.write(a); //2
如左边表达式为false
,则执行右边表达式
var b = 0 || '' || 2 + 3;
document.write(b); //5
var c = 0 || null;
document.write(c); //null
3)非 !
转换成布尔值
再取反
六、类型转换
显示类型转换
1) Number()
转换成Number类型
var str = '123';
var num = Number(str);
console.log( typeof (num) + ' : ' + num ); // number : 123
ture
转换成Number类型 ==> 1
false
转换成Number类型 ==> 0
null
转换成Number类型 ==> 0
undefined
转换成Number类型 ==> NaN
2) parseInt()
转换成整型
3) parseFloat()
转换成浮点型
4) String()
转换成字符串
5) Boolean()
转换成布尔值
6) .toString()
转换成字符串
隐式类型转换
1) isNaN()
先把参数隐式转换成Number
类型,再判断是否为NaN
2)一元运算符会把运算子转成数值。(正负)
+'abc' // NaN
-'abc' // NaN
+true // 1
-false // 0
3)加法运算符(+
),当一边的值为字符串,另一个值为非字符串,则后者转为字符串。
4)除了加法运算符(+
)有可能把运算子转为字符串,其他运算符都会把运算子自动转成数值。
'5' - '2' // 3
'5' * '2' // 10
true - 1 // 0
false - 1 // -1
'1' - 1 // 0
'5' * [] // 0
false / '5' // 0
'abc' - 1 // NaN
null + 1 // 1
undefined + 1 // NaN