一、js是由哪几部分组成的?
1.核心(ECMAScript)
2.文档对象模型(DOM),JS用于操作HTML的api
3.浏览器对象模型(BOM),JS用于操作浏览器的api
二、数据类型
值类型(基本类型):字符串(String)、数字(Number)、布尔(Boolean)、Null类型、Undefined类型
引用数据类型:对象(Object)、数组(Array)、函数(Function)。
var x; // x 为 undefined,没有值
var x = 5; // 现在 x 为数字
var x=1/0; //结果:Infinity(正无穷大)
var x = "Ricardo"; // 现在 x 为字符串,字符串是存储字符的变量
person=null; //为null,可以通过将变量的值设置为 null 来清空变量。
var x=true; //布尔(逻辑)只能有两个值:true或false
var y=false;
var name=["aa","bb","cc"]; //数组
var student={name:"hh",age:18,gender:"男"}; //对象
-引用类型的值可以改变:
var person={name: 'hh'};
person.name="tt"; // 通过修改对象属性值更改对象
console.log(person) ;// 输出:{name: "tt"}
person.age=18; // 给对象增加一个属性
console.log(person); // 输出:{name: "tt", age: 18}
var arr=[1,2,3,4,5,6];
arr[1]=0; // 更改数组的某一个元素
console.log(arr); // 输出:[1,0,3,4,5,6]
arr[6]=8; // 给数组增加一个元素
console.log(arr); // 输出:[0,2,3,4,5,6,8]
-引用类型可以添加属性和方法:
var person = {};
person.gender = "男";
person.say = function () {
alert('hello world');
}
console.log(person.gender); // 输出:男
console.log(person.say); // 输出:function () { alert('hello world')
三、操作符
算数运算符 | 描述 |
---|---|
+ | 加 |
– | 减 |
* | 乘 |
/ | 除 |
% | 求余(保存整数) |
++ | 累加 |
- - | 递减 |
比较运算符 | 描述 |
---|---|
=== | 先比较两个值的数据类型,如果数据类型一致,再比较值,如果数据类型不一直,直接返回false |
!== | 不等于,取反=== |
== | 如果两个值的数据类型不一致,先转换成一致的然后再比较;如果比较的是引用数据类型,那么比较的是引用地址 |
!= | 不等于,取反== |
<,<= | 小于,小于等于 |
>,>= | 大于,大于等于 |
逻辑操作符 | 描述 |
---|---|
&& | 逻辑与,操作只有在它的两个操作数都是true时才会是true |
II | 只要它的操作数中有一个是true,结果是true。如果它的两个操作数都是true,结果也是true。只有当它的两个操作数都是false时,”逻辑或“操作才会是false |
! | 逻辑非,作用于单个逻辑操作数,其结果是把那个逻辑操作数所返回的布尔值取反 |
四、数据类型转换
1.判断变量的数据类型会用到标识符typeof
var mood = “happy”;
alert(typeof mood);
alert(typeof 95);
2.转换成字符串要使用toString()
var married = false;
alert(married.toString());
3.转换成数字时,有两种方法,parseInt() 转换成整数,parseFloat()转换成浮点数
var test = parseInt(“blue”); //returns NaN
var test = parseInt(“1234blue”); //returns 1234
var test = parseInt(“22.5”); //returns 22
var test = parseFloat(“1234blue”); //returns 1234
var test = parseFloat(“22.5”); //returns 22.5
五、流程控制语句
1.分支语句
if(exp){
}
//exp可以为任何数据类型,但是在执行的时候会被自动转换为boolean
if(exp){
}else{
}
if(exp1){
}else if(exp2){
}else{
}
var v='1';
switch(v){
default:
break;
case '1':
//...
break;
case '2':
//...
break;
...
}
switch 中,变量与常量对比的时候使用===
每个case的结束都需要有break
default可以出现在switch中的任何位置,但是如果不在最底下,务必添加break
break,continue区别:
continue//跳出本次循环,直接进入下次循环
break//结束掉整个循环
2.循环语句
三要素:初始化条件,结束判定条件,迭代器
1. for循环
for(初始化条件;结束判定条件;迭代器){
//循环体
}
2. while循环,循环是先判断后执行
初始化条件
while(结束判定条件){
//循环体
迭代器
}
3. do while,是先执行一次再判断
初始化条件
do{
//循环体
迭代器
} while(结束判定条件);
4. 增强for循环
数组,Collection
数组和对象
for(var i in arr){
}
六、对象
对象的属性可以动态添加和删除
1) 创建空对象
1. 构造函数
var obj = new Object();
obj.id = 1;
obj.name = "terry";
obj.gender = "男";
2. 对象字面量
使用大括号括起来,属性与属性之间通过逗号隔开,属性名与属性值之间通过冒号隔开。属性可以不加引号,但是属性中出现了特殊字符,一定要加引号
var obj = {};
var obj = {
id:1,
name:"terry",
gender:"男"
}
2) 访问对象属性
1. 点访问符
var obj = {
id:1,
name:"terry",
gender:"男"
}
obj.id
2. 中括号访问符
var obj = {
id:1,
name:"terry",
gender:"男"
}
obj["id"]=>var id = "id";
obj[id]
3. 遍历对象
for(var key in obj){
var val = obj[key];
}
3) 检测属性
var obj = {
id:1,
name:"terry",
gender:"男"
}
"id" in obj
4) 删除属性
delete obj.name
5) 对象序列化
var params = {
username:"terry",
password:"123321"
}
1. 序列化
JSON.stringify(params)
{username:"terry", password:"123321"}
'{"username":"terry","password":"123321"}'
2. 反序列化
JSON.parse(json);
6) 在js中所有的对象都可以调用Object原型【方法区】中的方法
Object原型有哪些方法和属性
toString()
valueOf()
constructor
hasOwnProperty()
propertyIsEnumerable()