深入学习JS
一般而言,浏览器分为两个部分:
1.shell:用户能够自己操作的部分。
2.内核:浏览器核心(代码部分)
①:渲染引擎(HTML+CSS)
②:JS引擎
③:其他模块。
下面介绍几种主流浏览器和内核
主流浏览器 | 内核 |
---|---|
IE | trident |
Chrome | blink |
firefox | Gecko |
opera | presto |
safari | webkit |
JS执行队列:
task2,1ms -> task1,1ms -> task1,1ms -> task2,1ms -> task2,1ms ->task1,1ms -> JS执行主线程。
JS定义的开发标准:
var a = 10;
b = 20;
c = 30;
变量要换行写,可以赋值,等号左右两边最好空格保持排版。
值类型 ---- 数据类型
不可改变的原始值(栈数据):值类型由值决定
Number:var a = 123;(自带浮点型)。
Boolean: var b = true/false;(只有对和错)。
String: var c = "abcdefg";
undefined: var d = undefined (未定义)。声明未定义打印出这个值
null: var e = null(空)常用于覆盖。
引用值:
Array(数组)
object (对象)
function(方法)
......
注意:原始值:把第一个值赋值给第二个,改变第一个值,第二个值不受影响。
引用值:改变第一个值,第二个值也变。
原始值:
var a = 10;
var b = a;
a = 20;
//打印出的值:a为20,b为10。
引用值
var arr = [1];
var arr1 = arr;
arr.push(2);
输出:arr1与arr一样。
typeof(操作符):区分数据是什么类型的。
六种数据类型:number,string,undefined,boolean,object,function。
用法:①:typeof(数据);返回六种类型中的一种
②:typeof 数据;
类型转化:
显示类型转换(区分大小写):
Number(mix):将数据类型转化为number型。
parseInt(a,b):将数据类型转化成整型。
(b参:取值2~36(进制),可不填)
parseFloat(a):将数据类型转化为浮点型
PS:parse类型检测:只要第一个为数字,可输出至为数字为止。
eg:"1234abc123" -> 1234
Number:只要出现字母,输出都编程NaN。
String(mix):转为字符串(类型全部都为字符串,值可能相等)
Boolean():转为布尔值类型(除了那六个(undefined,null,NaN,""(双引号),0,false)为假,其他都为真)
toString():用法不同
eg:var a = 123;
var b = a.toString();
隐式类型转化(内部调用显示的方法)
isNaN():判断括号内的数是否为NaN。
把变量放入Number()中进行转化,再与NaN比较。
++/--,+/-:变把变量放图Number()中,再进行++或--,不管能不能运算,类型都转成了number了。
“+”:两侧有一个为字符串,都会调用string().
-,*,/,%:先转为Number()再进行计算。
特例:把未定义的变量放入typeof()中不会报错,
还会打印出undefined.
typeof返回的六种数据类型都是string;
typeof(typeof(a)) (a未定义) -> typeof(undefined) ->string.
函数(弱数据类型语言永远输出不了地址):
函数表达式:
var test = function abc()
{
document.write("a");
}
//执行 test() ->打印出a
//执行 abc() ->报错。
//但是,test.name ->abc(函数名为abc)
参数:
function test(a,b){
var a,b;//test(a,b)相当于再函数里面定义了a,b两个变量
}
传递参数:test(5,6);
a,b:形式参数。
5,6:实际参数。
形式参数和实际参数可以不同,但是都一一对应,无对应则为undefined。
形式参数个数<实际参数个数:
实际参数存在"arguments"数组中,可遍历再将未有对应形式参数的实际参数输出。
形式参数存于名称(本函数为test)的数组中;实际参数存于arguments数组中。
映射:
实际参数 = 形式参数:
实际参数传给形式参数与argument[x(某值)]的一样,
形式参数>实际参数:
test(1);
function test(a,b){
var b = 2;
}
//输出arguments[1]值为undefined。