主流浏览器
浏览器组成
浏览器分为两部分:外壳(shell)和内核
- shell部分
- 内核部分
- 渲染引擎(语法规则和渲染)
- js引擎
- 其他模块
要想成为主流浏览器,必须需要有3%的市场占有率和独自研发的内核
主流浏览器 | 内核 |
---|---|
IE | trident |
Chrome | webkit/blink |
firefox | Gecko |
opera | presto |
Safari | webkit |
js执行队列
js的特点
- 解释型语言
- 单线程
js基本语法
变量variable
- 变量声明var
单一var模式:
var a = 10,
b = 20,
c = 30,
d;
- 命名规则,大多跟其它语言一样
数据类型
不可改变的原始值(栈)stack
- Number
- Boolean
- String
- undefined 就一个值undefined,无定义值
- null 表示占位,代表空
栈内存里面的东西复制的是一个副本,二者互不影响
引用值(堆)heap
- 数组类型array
- Object对象类型
- function
- …date RegExp
引用值放在栈里的是堆里的地址,复制的是地址,二者可以影响对方
js运算符
+,-,*,/,%
功能与其它语言都差不多
特殊的:-1/0=-Infinity
0/0=NaN
比较运算符
与其他语言一样
特殊的:NaN == NaN==>false
逻辑运算符
跟其它语言不一样,只有短路语句:&& || !
不管返回值,逻辑运算符甚至可以跟表达式
位运算符 & |,用二进制算,相同为1,不同为0
false:
- undefined 返回undefinde
- null 返回null
- NaN 返回NaN
- “”(空串)返回""空串
- 0 返回0
- false 返回false
其它皆为true
返回的都是原本的数据类型,返回的不是布尔值
if和for循环
与Java语言并无二样,格式都一样
continue,break
常用函数
- document.write(); 文档流输出
- console.log(); 控制台输出
- Math.sqrt() 开方
- parseInt(""); 是将字符串变成Number
- typeof() 获取类型,凡是引用型,皆可返回Object,null也是返回Object
- alert(’’);弹窗
- toFixed(number):保留指定位的小数位
面向对象编程
JavaScript是半面向对象,半面向过程!
格式
var deng={
lastName : "Deng",
age:40
}
类型转换
显示类型转换
即使转换不成功,但它的类型一定会转换成功的!
- Number(),转换为数字,null转为0,undefined转为NaN,“a”也是NaN
- parseInt(String, radix):把传进来的String字符串以radix为基准进制来将其转换为十进制整形,此方法只能转换数字字符串,“a”或布尔值都会转换为NaN,从左到右开始看,看到非数字位返回!
- parseFloat(String):转化为浮点型,看到非小数点以外的非数字位截至返回
- String(mix),转换为字符串
- Boolean:转换为布尔值
- toString(radix),将对象转换为字符串,跟java类似,NaN和undefined不能转换!,radix为目标进制,对象转换为radix进制
隐式类型转换
- isNaN(i):先把i拿到房放在Number里面转换,然后在与NaN比较,返回布尔值
- ++/-- +/- (一元正负)
- ++先调用Number转换为数字
- 正负号也是先调用Number将其转换为数字
- “+“:隐式调用string(),当加号的两侧有一个字符串,会将其全变为字符串
-,* / %
隐式调用Number()- && || !
> <
- == !=
- 2>1>3=》false,2>3<1=>true,undefined == null,NaN==NaN=>false,
- undefined >0==>false
- undefined<0==>false
- undefined0>false
- null和undefined一样
- 不发生隐式类型转化的:===绝对等于,!==绝对不等于
注意
- 未定义的变量一经使用,就会报错误,但console.log(type(a));
- typeof()返回的类型是string字符串类型
- typeof()的使用:
- string
- 123 number
- true/false boolean
- [1,2,3],null object
- typeof string
‘123’ | string |
---|---|
123 | number |
true/false | boolean |
[1,2,3]/null | object |
typeof | string |
NaN | number |
函数
高内聚,弱耦合
var test = function abc(arg1, arg2){
abc为test.name的值,若为匿名函数,name值为test
abc为函数的名字,在此,test替换了abc成为了函数的名字
若用test来接受函数abc,abc()调用会失败!
}