浏览器分为两部分:渲染引擎和JS引擎
渲染引擎:用来解析HTML与CSS,俗称内核。
JS引擎:也称为JS解释器,用来读取网页中的JavaScript代码,对其处理后运行。
浏览器本身并不会执行JS代码,而是通过内置JavaScript引擎(解释器)来执行JS代码。JS引擎执行代码时逐行解释每一句源码(转换为机器语言),然后由计算机去执行。所以JavaScript语言归为脚本语言,会逐行解释执行。
JS的组成:ECMAScript(JavaScript语法 ) DOM(页面文档对象模型) BOM(浏览器对象模型)
变量
用于存放数据的容器,通过变量名获取数据,或者修改数据
本质是程序在内存中申请的一块用来存放数据的空间
数据类型
在代码运行时,变量的数据类型是由JS引擎根据等号右边的变量值的数据类型来判断的
JS中八进制前加0,十六进制前加0x
typeof xxx 获取xxx的数据类型
num.toString(); String(num); 字符串和任何数据类型相加,结果都是字符串
Boolean()
逻辑中断:
逻辑与
数组长度:array.length
函数中arguments的使用:只有函数中才有的内置对象,可以获取传递过来的实参。当不知道用户传多少个实参过来的时候使用。
在函数内部,没有声明直接赋值的变量也属于全局变量
JavaScript代码是由浏览器中的JavaScript解析器来执行的。JavaScript解析器在运行JavaScript代码的时候分为两步∶预解析和代码执行。
预解析: JS引擎会把JS里所有的var 和 function提升到当前作用域的最前面
代码执行:按照代码书写的顺序从上往下执行
预解析分为 变量预解析(变量提升)和函数预解析(函数提升)
变量提升就是把所有的变量声明提升到当前的作用域最前面,不提升赋值操作。
对象
万物皆对象,对象是一个具体的事物。
对象是一组无序的相关属性和方法的集合。
一、创建对象
1、花括号
var obj={
username:'qiu',
age:18,
sex:'女',
sayHi:function()
{
console.log('Hi');
}
}
调用对象的属性:对象名.属性名 ; 对象名[‘属性名’]
调用对象的方法:对象名.方法名()
2、new Object
var obj = new Object();
obj.username = 'qiu';
obj.age = 19;
obj.sayHi=function(){
console.log('Hi-');
}
3、利用函数
function Star(username, age, sex){
this.name=username;
this.age=age;
this.sex=sex;
this.sing=function(sang)
{
console.log(sang);
}
}
var ldds = new Star('mary', 85, '女');
ldds.sing('xxx');
遍历对象
for(var k in obj){
console.log(k);//得到的是属性名
console.log(obj[k]);//得到的是属性值
}
内置对象
JavaScript中的对象分为三种:自定义对象、内置对象、浏览器对象
内置对象包括 Math、Data、Array、String等
MDN: https://developer.mozilla.org/zh-CN/
得到两个数之间的随机整数。
时间戳
倒计时算法:
检测是否为数组:
arr instanceof Array
Array.isArray(arr)
添加或删除数组元素的方法
arr.reverse()
arr1.sort(function(a,b){
return a-b; // 按照升序排列
return b-a; // 按照降序排列
});
将数组转化为字符串:arr.toString() arr.join('')
将字符串转化为数组:arr.splite('')
字符串中的值不可变,虽然重新赋值看上去改变内容,但实际上是地址改变了,内存中新开了一个内存空间。