目录
一、变量
1.定义
(1)声明:var a;
(2)赋值:a=10;
2.变量的命名规则
字母,数字,下划线组成,不能由数字开头
变量 | 小写,小驼峰命名法 |
函数 | 大驼峰命名法 |
常量 | 大写 |
案例:交换两个变量的值
方法一:
var a=10;
var b=20;
var temp;
temp=a;
a=b;
b=temp;
document.write('a的值是'+a,'b的值是'+b);
方法二:
var a=10;
var b=20;
a=a+b;
b=a-b;
a=a-b;
document.write('a的值是'+a,'b的值是'=b);
二、常量
不可修改的量
大写
三、数据类型
基本数据类型 | Boolean | 布尔型 |
String | 字符串 | |
Number | 数值 | |
null | 空对象指针 | |
undefined | 是null的派生词 undefined==null(结果是true) 变量只声明,不赋值 | |
引用数据类型 | Array | 数组 |
Function | 函数 | |
Date | 日期 |
1.基本数据类型
(1)Boolean
只有两个值 0-1 true/false
(2)String
字符串/单个字符串 "" ,' '," ' ' " (双引号套单引号)
转移字符:\
\"
"aaaaa".lenght //字符串的长度
(3)Number
不区分整型,单精度,双精度等
Number.MIN_VALUE
5e-324
进制:
二进制 | 0-1 | 0b |
八进制 | 0-7 | 0 |
十六进制 | 0-9 A-F | 0X |
(4)null
var obj={};//{}代表空对象
var obj=null;//空对象,null保存了一个地址,但是这个地址的内存空间没有值
var a=0;
var obj=null;//空对象里面无值,也起到初始化的作用
(5)undefined
变量只声明,不赋值
var a;//a就是undefined
2.基本数据类型转换:
数值转换 | Number() | 任何类型转换为数值类型 |
parseInt() | 字符串转换为数值类型 | |
parseFlaot() | 字符串转换为浮点型 | |
布尔型 | Boolean() | 任意类型转换为布尔型 |
任意类型转换为字符串 | string(参数) | |
对象.toString() | toString()不能转换为 null和undefined |
(1) Number()
Number(true);//1
Number(false);//0
Number(null);//0
Number(undefined);//NaN
NaN==NaN;//false
Number('abc');//false
(2) parseInt()
//排查:前几个字母能转的话就给你转了,遇到真正的字母就停止转换了 力所能及
parseInt('abc');//NaN
parseInt('10abc');//10
parseInt('abc10');//NaN
parseInt('10abc20')//10
(3) parseFloat()
parseFloat('10.234');//10.234
parseFloat('10');//10
(4) Boolean()
//布尔型转换为false的情况
Boolean(0);
Boolean('');
Boolean(false);
Boolean(NaN);
Boolean(null);
Boolean(undefined);
(5) string()
string(参数) | |
对象.toString() | toString()不能转换null和undefeined |
(6) toString()
3.引用数据类型
Object(Array/Function/Date)
(1)Obejct
对象都是保存在堆里面的
对象是属性和方法的集合,他与数组的差别是有序的,对象保存的是无序的数据
键值对存在, key-value(属性名:属性值)
- 对象的定义:
-
字面量(糖衣法) var obj1={
键:值;
........
}
构造函数法(实例法) var obj1=new Object();
obj1.键=值;
.........
-
(I)字面量(糖衣法 开发中经常要用的)
var obj1={
name:'杨大哥';
year:23;
12:23.5;
sex:'男';
hobbies:['斗地主','变魔术','游泳'];
Swimming:function(){
console.log('杨大哥蜻蜓点水,不敢入水');
}
}
console.log(obj1.name+'年龄是'+obj1.year+'性别是'+obj1.sex+'爱好是'+obj1.hobbies);
console.log(obj1.Swimming());
console.log(obj1['12']);
//循环 对象遍历 for-in
for(var index in obj1){
document.write('键'+index+'值'+obj1[index]+'<br>');
}
(II)构造函数(实例法)
var obj=new Object(); //obj实例
obj.name='杨大哥';
obj.year=23;
obj.sex='男';
obj.Swimming=function(){
console.log('杨大哥蜻蜓点水,不敢下水');
}
obj['12']=23.5;
(2)Array
-
本质:连续的数据(顺序) 连续的存储空间
数组下标从0开始,数组名字保存在内存中的首地址
- 特点:
js中得数组是动态的,长度是可变的,数据有多少,长度就有多大
可以保存任意类型的数据,非常灵活
- 定义一个数组
糖衣法 | var arr=['abc',123,..........] |
构造函数法 | var arr=new Array(); arr[i]='dfrrg'; |
(I)糖衣法
//var 数组名=[]
var arr=['a',123,'fhjf',23.345,['a','b','c'],{name:'lily',sex:'男'}];
//循环 遍历数组
//for(){} while(){} forEach()
//()代表条件 {}执行语句
for(var i=0;i<arr.lenght;i++){
console.log(arr[i]);
}
(II)构造函数法
var arr=new Array();
array=['a',123,'sdhf',23.345,['a','b','c'],{name:'lily',sex:'男'}];
//随时动态扩充
arr[18]='18下标';
document.write(arr);
//Array(19) [ "a", 123, "fhjf", 23.345, (3) […], {…}, <4 empty slots>, … ]
(3)Function
(4)Date
4.如何判断数据类型
判断基本数据类型 | typeof 运算符 |
判断引用数据类型 | instanceof 运算符 |
console.log(typeof 'abc');//string
console.log(typeof 123);//number
console.log(typeof null);//object null代表空对象指针,指针指向谁,就是谁的数据类型
console.log(typeof undefined);//undefiend
var arr= new Array();//arr是Array()
arr instanceof Array;//true arr 是Array的实例
arr instanceof Object;//true arr是Object的实例
Array instanceof Object;//Array是Object的实例
//arr继承Array,Array继承Object
四、运算符
1.算数运算符
算数运算符 | + - * / % |
优先级 | * / % + - |
表达式 | 操作数+运算符 |
2.关系运算符
> >= < <= == | ==等于 |
=== | ===全等于 不光进行数值上的判断,还会判断类型 |
%= *= /= += -= |
'10'==10;//true
'10a'==10;//fasle
'10'===10;//false
3.逻辑运算符
&& | 与 | 同真为真,一假为假 |
|| | 或 | 一真为真,同假为假 |
! | 非 | 取反 |
if(!err){
console.log('已经没有错了');
}
if(!null){
console.log('不空');
}
4.自增、自减
++ | i++ | 先输出i,再加1 |
++i | 先加1,再输出i | |
-- | i-- | 先输出i,再减1 |
--i | 先减1,再输出i |
var i=1;
document.write(i++);//1
document.write(++i);//3
var i=1;
document.write(++i);//2
document.write(i++);//2