目录
一、浏览器
浏览器的组成:shell部分(可视部分)
内核部分(渲染引擎,JS引擎,其它部分)
主流浏览器及内核:
二、JS基本语法:
基本语法规则:
每条语句以分号(;)结尾
JS语法错误会引发后续代码块终止,但不会影响其它JS代码块
书写格式要规范,“= + - /”等运算符两边都应该有空格
js引入方式:外部js文件和内部js。不能同时外部JS又内部js。同时引用内部js会失效。
1、变量
可变的量,用来存储数据,声明,赋值。
var单一变量。
命名规则:
1.可以包含英文字母、数字、_、$;
2.开头只能是英文字母、_、$;
3.不能包含保留字(如var有特殊语法含义)
2、变量类型
值类型(基本类型)
字符串(String)、数字(Number)、布尔(Boolean)、对空(Null)、未定义(Undefined)、Symbol。
布尔型只有两个值,ture和false。
Symbol 是 ES6 引入了一种新的原始数据类型,表示独一无二的值。
NaN:not a number(不是一个有效数字,但它属于number数据类型) 。
表面上 undefined 与 null 都是什么都没有的意思,但是实际上 undefined 是未定义(就是变量没有初始化),null 是一个变量初始化了,但是什么值都没给,只给了一个空对象;进一步说,undefined 与 null是值相等,类型不相等。
引用类型
对象(Object)、数组(Array)、函数(Function)。
类型转换
强制转换
利用js提供的函数parseInt() ,parseFloat() ,Number(),Boolean()进行数据转换,每个函数具体有很多用法,使用前先百度。
parseInt("12.3元")//12
parseInt("abc");//NaN
parseFloat("12.35元")//12.35
parseFloat("12.23.122");//12.23
Number(true);//1
Number(null);//0
Boolean("abc");//true
Boolean('');//false
隐式类型转换
字符串和数值类型之间的转换,在进行字符串和数字之间进行减乘除取模运算或者进行比较运算时,他会自动把字符串转换为数字。
typeof操作符
可用来查看 JavaScript 变量的数据类型。
typeof NaN // 返回 number
typeof false // 返回 boolean
typeof [1,2,3,4] // 返回 object
typeof myCar // 返回 undefined (如果 myCar 没有声明)
typeof new Date() // 返回 object
typeof function () {} // 返回 function
3、运算符
优先级:
算术运算符 > 关系运算符 > 逻辑运算符
算术运算符
① “+”
1.数学运算,字符串连接
2.数据类型加字符串都等于字符串
② “/”
1/0结果为infinity(正无穷) -1/0结果为-infinity(负无穷) 0/0 结果为NAN (not a number不是一个数)
③ “-”、“*”、“%”(摩尔,取余)、“=”(优先级最低)、“()”(括号优先级最高)
④ “a+=10”
a=a+10的简写
⑤ “a++”
先执行当前所在语句,再a+1赋值给a,再执行下一条语句。“a--”同理
⑥ “++a”
先把a+1赋值给a,再执行当前所在语句。b=--a+--a;最后b的值为-1,因为每次--a都是在当前改变了的a基础上。
关系运算符
< <= > >= == != === 字符串比较大小比较的就是ascl码顺序。
逻辑运算符
(&&与、||或、!非)优先级是:!、&& 、|| 。
4、语句
条件语句
通过判断表达式的值来决定执行还是跳过某些语句,包括if语句和switch语句。
if语句
条件必须放在if后面的圆括号内,条件的求值结果永远是一个布尔值,即只能是true或false。
if(1>2){
alert('1');
}
如果if语句中的花括号部分只包含一条语句,可以不使用花括号。但因为花括号可以提高脚本的可读性,所以在if语句中总是使用花括号是个好习惯。
if(n == 1){
//代码1
}else if(n == 2){
//代码2
}else if(n == 3){
//代码3
}else{
//其他代码
}
可以用if语句的嵌套形式来完成在语法上等价的代码,但没有else if语句清晰
if(n == 1){
//代码1
}else{
if(n == 2){
//代码2
}else{
if(n == 3){
//代码3
}else{
//其他代码
}
}
}
switch语句
当所有的分支都依赖于同一个表达式的值时,else if并不是最佳解决方案。在这种情况下,重复计算多条if语句中的条件表达式是非常浪费的做法,而switch语句正适合处理这种情况。不一定为123,可以为ture,a等等,满足哪个执行哪个。
//等价于
switch(n){
case 1:
//代码1
break;
case 2:
//代码2
break;
case 3:
//代码3
break;
default:
//代码4
}
如果代码块123相同可省略。
switch(n){
case 1:
case 2:
case 3:
//代码3
break;
default:
//代码4
}
循环语句
条件语句把javascript中的代码变成一条条的分支路径,而循环语句(looping statement)就是程序路径的一个回路,可以让一部分代码重复执行。
3种循环语句:while、do/while、for。
while语句
满足条件再执行循环体。
var count = 0;
while(count < 10){
console.log(count);
count++;
}
while(true)会创建一个死循环
do/while语句
先执行循环体,再判断条件,也就是至少会执行循环主体一次。用分号结尾。
do{
console.log(a[i]);
}while(++i<len);
for语句
具有特定的计数器变量,计数器的三个关键操作是初始化、检测和更新。
var count = 10;
var i;
for(i = 0; i < count; i++){
console.log(i);
}
for(i = 0,j =10; i<10; i++,j--) sum+= i*j;可以改变多个变量。
for(;;)和for(i = 0; ; i++)是死循环。
跳转语句
包括break、continue和return语句。
break语句
只有出现在循环语句或switch语句中才合法,出现在其他语句中会报错。作用是立即退出最内层的循环或switch语句。
for(var i = 0; i < a.length; i++){
if(a[i] == target) break;
}
continue语句
和break语句非常类似,但它不是退出循环,而是转而执行下一次循环。
continue语句带不带标签,它只能在循环体内使用。在其他地方使用将会报语法错误。
return语句
指定函数调用后的返回值,只能出现在函数体内,如果不是会报语法错误。当执行到return语句时,函数终止执行,并返回值给调用程序。
return x*y.