JS知识点

310 阅读5分钟

JS变量

var 关键字定义一个变量 java c/c++ go 强数据类型余元 JS弱数据类型语言(php)

变量命名方式

命名 数字字母下划线$符号 数字不可放在第一位

  1. 驼峰式 changeName
  2. 下划线试 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')
}