JS变量
var 关键字定义一个变量 java c/c++ go 强数据类型余元 JS弱数据类型语言(php)
变量命名方式
命名 数字字母下划线$符号 数字不可放在第一位
- 驼峰式 changeName
- 下划线试 change_name
JS基本数据类型
字符串(string)、数字(number)、布尔(boolean),对象(objeck)、Null、Undefined
undefined 与 null区别
null 空对象
console.log(typeof(null));//object
undefined 变量声明以后未赋值
console.log(typeof(undefined));//undefined
typeof() 判断数据类型 返回是一个字符串
var定义的变量提升
a;
console.log(a);//undefined
var a = 2 ;
JS引用数据类型
array object
数组的定义
数组下标唯一
var arr = [];
//一个参数代表数组长度
var a1 = new Array(3);
//多个(>1)参数 对数组进行初始化
var a2 = new Array(1,2,3)
// arr 与 a3 等价 没有长度的空数组
var a3 = new Array ;
数组方法
concat(): 数组拼接,返回新数组
var a1 = [1,2];
var a2 = [3,4];
var a3 = a1.concat(a2);
console.log(a3);//[1,2,3,4]
join(): 将所有元素结合用join中参数连接成字符串
var arr1 = [1,2,3,4,5];
var arr2 = arr1.join('&');
console.log(arr1);//[1,2,3,4,5]
console.log(arr2);//1&2&3&4&5
pop(): 删除数组的末位 返回的是删除之前的最后一位
var a1 =[1,2,3,4];
var a2 = a1.pop()
console.log(a2);//4
console.log(a1);//[1,2,3]
push(): 在数组的末尾添加 返回的是数组长度
var a1 =[1,2];
var a2 = a1.push(3,4);
console.log(a2);//4
reverse(): 颠倒数组的顺序 并修改原数组
var arr = [1,2,3,4];
arr.reverse();
console.log(arr);//[4,3,2,1]
shift(): 删除数组第一项 返回的是原数组的第一个值
var arr = [1,2,3,4];
var a = arr.shift();
console.log(a);//1
console.log(arr);//[2,3,4]
unshift(): 在数组的开头添加 返回数组长度
var arr = [1,2,3,4];
var a = arr.unshift(0);
console.log(a);//5
console.log(arr);//[0,1,2,3,4]
slice(): slice(start,end)数组中提取一部分 从下标start开始到end(不包含end)
var arr1 = [1,2,3,4,5];
var arr2 = arr1.slice(3,4);
console.log(arr1);//[1,2,3,4,5]
console.log(arr2);//[4]
splice(): 向原数组添加或删除元素 并且会修改原数组 返回值为已删除的数组
删除元素
var arr1 = [1,2,3,4,5];
//第一个参数:下标 第二个参数:删除元素个数
var arr2 = arr1.splice(0,2)
console.log(arr1);//[3,4,5]
console.log(arr2);//[1,2]
添加元素
var arr1 = [1,2,3,4,5];
//第二参数为0,第三元素为添加元素内容 位置取决于第一参数
var arr2 = arr1.splice(0,0,0);
console.log(arr1);//[0,1,2,3,4,5]
console.log(arr2);//[] 空
sort(): 排序 会对原数组修改
var arr1 = [3,11,9,87,66];
function s1(a,b){
//递增排序
return a-b;
//return b-a; 递减排序
}
var arr2 = arr1.sort(s1);
console.log(arr1);//[3,9,11,66,87]
console.log(arr2);//[3,9,11,66,87]
数组与类数组
数组有内置的方法和length属性
类数组 只有length 没有数组的方法
对象
对象种类
1. 自定义对象
2. 内置对象 Array Date Math String
3. Dom
属性是唯一的 key
var obj = {};
var oj1 = new Object();
var person = {
//属性写法 key: value
name: 'John',
age: '18',
code: function() {
console.log('hello')
}
}
//调用属性 对象.属性
console.log(person.age);
person['age'];//person.age ->person['age']
//调用方法 对象.方法
person.code();
//for in 用于循环对象
for(ds in person){
//ds 对象的key
person['ds']
console.log(ds)
}
基本数据类型与引用数据类型的区别
1.栈(stack)和堆(heap)
stack为自动分配的内存空间,它由系统自动释放;而heap则是动态分配的内存,大小也不一定会自动释放
数据存储
基本数据类型存在 栈
引用数据类型存在 堆
2.JS数据类型
基本数据类型: Number、String、Boolean、Null、Undefined、Symbol(ES6),这些类型可以直接操作保存在变量中的实际值。
引用数据类型: Object(在JS中除了基本数据类型以外的都是对象,数据是对象,函数是对象,正则表达式是对象)
3.基本数据类型(存放在栈中)
基本数据类型是指存放在栈中的简单数据段,数据大小确定,内存空间大小可以分配,它们是直接按值存放的,所以可以直接按值访问
var a = 10;
var b = a;
console.log(a) // 10;
console.log(b) //20;
4、引用数据类型(存放在堆内存中的对象,每个空间大小不一样,要根据情况进行特定的配置
变量提升
函数
两种定义方法
function fun1(x,y){
//形参
}
//实参
fun1(1,2);
var fun2 = function() {
}
全局变量 定义在外部的 函数内函数外都可以获取到
局部变量 定义在函数内部 仅在函数内能获取到
var a = 5;
function fun() {
var a = 2;//局部变量
console.log(a);
}
fun();//2
console.log(a);//5
var a = 5;
function fun() {
console.log(a);
a = 2;//全局变量
}
fun();//5
console.log(a);//2
定时器
setTimeout() 执行一个 n秒后执行 主线程的任务完成后,立即执行
setTimeout() 是异步的操作 会进入到任务队列里
setInterval()每隔n秒执行一次
clearInterval(),clearTime() 清除定时器
setInterval(function(){
fun();
},1000)//单位毫秒ms
//异步 所有任务完成 达到间隔时间执行
setTimeout(function() {
console.log('hello');
},0)
//异步 所有任务完成 达到间隔时间执行
setTimeout(function() {
console.log('1');
},0)
console.log(2);
console.log(3);
//输出 2 3 1
clearimeout() 参数为定时器
var Timer = setTimeout(function() {
console.log('hello world');
},0)
clearTimeout(Timer);//清除Timer定时器 typeof(Timer)->number
switch语句
case里的判断条件是否满足siwtch里的条件 例一
var num = prompt()*1;
switch(num){
case 1:
console.log('a')
break;
case 2:
console.log('b')
break;
case 3:
console.log('c')
break;
default:
console.log('default')
}
例二
var age = prompt()*1;
switch(true){
case age<12:
console.log('a')
break;
case age>=12 && age<18:
console.log('b')
break;
case age>=18:
console.log('c')
break;
default:
console.log('default')
}