基本写法:

书写格式

书写格式:内部js:在html中写一对script标签,js代码写在里面
         行内js:写在标签里
         外部js:用script加src引入
         可以在控制台调试代码

声明的方法以及名规范

声明变量:var声明,可以声明多个变量,并赋值,中间逗号隔开
变量赋值:变量名=值

变量名的命名规范:可以是字母,数字,下划线,$符号组成,数字不能开头,不能是关键字,保留字,
                 区分大小写,(必须遵守)
                 变量名必须有意义,见名知义。驼峰命名法,首字母小写,后面单词的首字母大写
                (可以不遵守)

数据类型:

全部的数据类型

基本数据类型:nuber:数值字面量,十进制,十六进制,八进制
                       浮点数(小数),判断NaN不是数字,
                       isNaN:判断不是数值的变量

                     String类型:字符串类型,需要用单引号或者双引号包起来
                   字符串用+拼接
                   字符串与其他类型拼接,其他类型会转成字符串
                   两边如果都是数值+号就是加法算数
                   字符串长度:用变量名.length来求
                   转义符:\反斜杠表示,\n换行,\t空四个位,\r回车,\\反斜杠,\'单引号,\"双引号(写在引号里)

                   Boolean布尔值类型:字面量:true,false只能写这两个

                   undefiend:表示一个声明了没有赋值的变量
                    Null:表示空,类型是Object,是个bug

                    复杂数据类型:Object创建对象

数据类型的转换

数据类型转换:typeof获取变量的类型

                       toString()转成字符串类型,变量名.toString()使用
                       有些值没有 toString()时,用String()来代替,String(变量名)使用

                        拼接字符串的方式:num + "",当 + 两边一个操作符是字符串类型,
                        一个操作符是其它类型的时候,会先把其它类型转换成字符串再进行
                         字符串拼接,返回字符串
   
                       Number()转换成数值类型:可以把任意值转换成数值,如果要转换的
                       字符串中有一个不是数值的字符,返回NaN
                       转换规则:字符串只有数字时,转为10进制
                                        字符串包含浮点格式,转为小数点
                                        字符串包含16进制,转为相同大小的10进制
                                        字符串为空,转成0
                                        除了这些,其他字符转成NaN

                        parselnt()转成整数,到第一个小数点结束,第一个字符不是数字或者符号就返回NaN
                        parselntFloat()转成小数,到第二个小数点或其他字符类型结束,解析的内容里只有整数,解析成整数

                        +号取正数,-号取负数,-0是原来的数

                        Boolean():转为布尔值,0    ' '    null    undefined    NaN会转换成false,其它都会转换成true

学习时间:

全部

算术运算符:+,-,*,/,(%取余)

一元运算符:++ 自身加1,-- 自身减1,前置++: 参与运算输出,后置++:运算完毕输出

逻辑运算符:&&并且,两端都是true才是true,一个为false都是false
                    ||或,两端有一个true就是true
                    !取反:true是false,false是true

关系运算符:==判断相等,比较值
                    ===判断相等,比较值和数据类型
                    字符串大小的比较:如果两个字符串中都是全数字,只需比较两个首字符串数字的大小
                                                  如果等号两侧有一个是数字类型,则将字符串转化为数字再进行比较

赋值运算符:=    +=    -=    *=    /=    %=  ,  num += 5;   相当于  num = num + 5;

运算符的优先级:括号>点运算符>一元运算符> 算数运算符 >关系运算符>逻辑运算符 >赋值运算符 
一元运算符优先级:  ++   --   
算数运算符优先级:  先*  /  %   后 +   -
关系运算符优先级  >   >=   <   <=    ==   !=    ===    !==
逻辑运算符优先级 先&&   后||   !


分支结构:
              if语句:只有条件为true时,使用该语句
              if else语句:当条件为true时执行if大括号中的代码,为false时执行else中的代码
              if else if语句:可以写多个条件,以及执行多个代码
              
              用户输入框:prompt,输入框接收到的内容都是字符串类型
 
              三元运算符:条件?结果1:结果2,条件成立时运行结果1,否则运行结果2
    
              switch语句:使用switch括号中的变量和case后的数据做等值判断,如果相等执行case中的代码
                                  case可以有多个,如果都不相等,执行defau结构,defaultk可以省略,break用在
                                  switch中,表示结束switch,如果没有则程序会继续向下运行

              布尔类型隐式转换:0  ‘’ null    undefined     false  这些是false,其余都是true   1

循环结构:
               while语句:while(循环条件){循环体 变量迭代}  (语法结构)
                                 什么时候停止循环(循环条件)重复动作(循环体) 变量++(变量迭代)
               do while语句:do{循环体 变量迭代 } while(循环条件)(语法结构)
                                     无论条件成不成立,都先执行一遍

               for语句:(初始变量;循环条件;变量迭代){循环体}   (语法结构)
                                可以固定循环次数
                                特殊写法:初始变量,变量迭代可以拿出来,但是分号不能省略

for循环多个变量判断:可以有多个初始变量,循环条件,变量迭代,之间用逗号隔开,当最后一个
                                   循环满足后就停止循环

嵌套循环执行原理:外层执行一次,内层执行一遍

用嵌套循环打印图形:外层是行,内层是每行的数量

break:结束整个循环,执行循环以外的代码(满足循环条件后执行)
            可以用在switch和循环中
continue:结束本次循环,执行下一次(直接在变量迭代开始)
                只能用在循环中

调试:alert()弹窗
          console.log()打印到工作台
          debugger关键字:用于停止js,并调用调试工具
          断点调试:f12  f10  f8

数组:
         创建数组:var  变量名【】,数组中的内容用括号隔开
         数组的下标是从0开始,获取数组中的下标,用 数组名【下标】
         用变量名.lenght获取数组长度
         变量名.length=0,设置数组长度为0,代表清空数组
         
         遍历数组:for(var 变量名=0;变量<数组名.lenght;变量名++)

数组赋值:变量名【下标】,可以覆盖原本的数组,也可以新增数组,如不按顺序来就会出现undifferentiated
                变量名.push(’内容‘)只能新增

   break有就近原则,离着谁近结束那个循环

   函数命名规则:字母,数字,下划线,$符号组成,不能以数字开头,不能有关键字,保留字,区分大小写,驼峰命名法。

      函数定义: 用function 函数名(){}  (函数声明), var 变量名  function(){}
(函数表达式)

      函数的调用:用函数名()来调用,可以多次调用,只有调用才能执行函数

       函数的参数:function  函数名(变量名,变量名2){}(带参数的函数声0明),   
       函数名(变量值1,变量值2)(带参数的函数调用)

       函数的返回值:返回值的语法function函数名(变量名1,变量名2){}
       return返回值必须写在函数最后面, return后面的内容不会执行,没有return,或者后面没有值,会显示undrfined
       返回值的调用:var   return=变量名(1, 2)

       函数覆盖:两个声明函数名相同,后面会覆盖前面的
       相同函数名的调用:会调用离着调用函数最近的
       同名函数表达式,向上就近原则,调用离他最近的
     
       函数的内置对象:argumrnts:callee属性:函数的本身
                                                      callee.name:函数的名字
                                                      length属性:实参的个数
                                                      callee.length:形参的个数

       匿名函数:匿名函数不能被调用来执行,只能用括号把函数声明括起来,来自调用
       
       函数是一种引用数据类型,(focntion)
       因为函数也是一种类型,可以把函数作为参数传进去,也可以返出来
 
       回调函数:在主函数执行完后执行的函数,调用方法,函数名(回调函数名)

       同步任务:一个一个执行任务,只有前一个执行完后一个才执行
       异步任务:同时执行多个任务
       异步机制:所有同步任务都在主线程上执行,行成一个执行栈,主线程之外,还存在一个任务队列,只要异步任务有了结果,就会在任务队列中放置一个事件
                        一旦执行栈中的所有同步任务执行完毕,系统就会读取任务队列,看看里面还有哪些事件,那些对应的异步任务,于是结束等待状态,进入执行栈,开始执行
                       主线程不断的重复上面的第三步
       异步编程主要有:setTimeout,ajax回调函数,promise对象,generator函数,事件机制
       
       预解析:在js引擎执行js代码之前,会将function,var开头的函数提前解析,
                    var只会解析声明,所以结果是变量没有赋值
       
       同名函数预解析:同名函数,后面会覆盖前面的,所以结果是后面的
       
       变量声明和函数同名:当出现变量声明和函数同名的时候,只会对函数声明进行提升,变量会被忽略,
                                        按照常规的书写顺序,同名的函数与变量,变量会覆盖函数

作用域:
           全局作用域:直接写在script或者在JS文件中的代码,全是全局作用域,也都可以通过window.出来
                               全局函数是window方法
            局部作用域:在函数中的范围成为局部作用域,局部作用域,仅在内部生效
                                调用函数时,作用域生效,执行完函数作用域失效,每调用一次函数就会创建一个新的作用域
                                他们之间是独立的
            隐式全局作用域:没有var,视为隐式全局变量

对象创建方式: 
                       创建对象字面量方式:var 变量名={属性 }},属性之间用逗号隔开

                       new Object()创建对象:用var 变量名=new Object()来创建

                       工厂函数创建对象: createPerson函数是创建多个函数

                       自定义构造函数:是在创建对象时调用的函数,一边情况下,构造函数名首字母大写
属性和方法:如果一个变量属于一个对象所有,那么该变量就可以称之为该对象的一个属性,属性一般是名词,用来描述事物的特,征
                    如果一个函数属于一个对象所有,那么该函数就可以称之为该对象的一个方法,方法是动词,描述事物的行为和功能
                    
new关键字:构造函数用于创建一类对象,首字母要大写。构造函数要和new一起使用才有意义。
                    new在执行时会做四件事情:
                                                             1、new会在内存中创建一个新的空对象
                                                             2、new会让this指向这个新的对象
						 3、new会返回这个新对象
                    

this的作用:一般函数直接执行,内部this指向window
                   this写在对象的方法中,被该对象所调用,this指向该对象
                   

对象使用:通过for  in可以遍历一个对象 ,创建一个变量,这个变量每次都会拿到一个属性方法
                 for in语法结构:for(var  变量名 in 对象名)
                delete 对象名.属性 (删除对象属性)                 

try和catch:try里面放可能出错的代码
                   catch当try出现错误时,会执行catch中的代码
                   try没有错误时,不会执行catch,当遇到错误,立马执行catch,try后面的代码不会执行

finally语句:无论try和catch执不执行,都会执行finally里的代码

throw语句:可以自定义错误,需要使用catch结构来捕获,alert(error)参数


内置对象:
               Math对象:
                                常用属性:Math.Pl 圆周率
                                常用方法:Math.random()生成随机数0~1之间
                                                 Math.floor()向下取整12.5   12
                                                 Math.ceil()向上取整12.5    13
                                                 Math.round()取整四舍五入
                                                 Math.abs()          绝对值    
                                                 Math.max()         最大值 
                                                 Math.min()         最小值  
                                                 Math.sin()          正弦
                                                 Math.cos()          余弦
                                                 Math.pow()         求指数次幂
                                                 Math.sqrt()         求平方根

                                 随机数公式:Math.floor(Math.random()*(最大值-最小值)+最小值)
               
                Date对象:Date是个构造函数,用var 变量名 = new Date()获取当前系统时间,如果括号里写数字,所有日期就会按照写的数字来出日期

                字符串对象:用var  变量名 = new String(‘内容’)创建
                                   字符方法:    charAt()        //获取指定位置处字符    charCodeAt()    //获取指定位置处字符的ASCII码    str[0]          //HTML5,IE8+支持 和charAt()等效    2 字符串操作方法    concat()        //拼接字符串,等效于+,+更常用    slice(start,end)         //从start位置开始,截取到end位置,end取不到    substring(start,end)     //从start位置开始,截取到end位置,end取不到    substr(start,length)         从start位置开始,截取length个字符    indexOf()       //返回指定内容在元字符串中的位置,,如果没有,返回-1;(从前往后,检索到第一个就结束)    lastIndexOf()   //返回指定内容在元字符串中的位置,,如果没有,返回-1;(从后往前,检索到第一个就结束)    trim()          //只能去除字符串前后的空白    大小写转换方法    toUpperCase()   //转换大写    toLowerCase()   //转换小写    search()//方法用于检索字符串中指定的子字符串,返回子字符串的起始位置    replace(old,new) //替换字符串替换字符串 new替换old    split() //分割字符串 返回的是一个数组。。数组的元素就是以参数的分割的
               
                 Array对象: 
                                  创建数组:   
                                                  字面量创建:var  变量名=【值1,值2】
                                                  关键字创建:var  变量名= nwe Array(值1,值2)
                                     
                                   检测一个变量是否是数组:
                                                                          instanceof返回true就是数组,如果返回false就不是数组
                                                                          Array.isArray()返回true就是数组,如果返回false就不是数组
                                                                          valueOf()返回数组本身

                                    栈操作(先进后出):push()添加元素,末尾添加
                                                                      pop()删除元素,末尾删除

                                     队列操作(先进先出):shift()删除元素,开头删除
                                                                          unshift()添加元素,开头添加
                                     
                                     排序方法:reversr()反转数组,         
                                                      sort()数组排序
                                      
                                      操作方法:concat() 把参数拼接到当前数组、 或者用于连接两个或多个数组 
                                                       slice(开始下标,结束下标)

                                       截取数组:charAt()        //获取指定位置处字符   
 charCodeAt()    //获取指定位置处字符的ASCII码    
str[0]          //HTML5,IE8+支持 和charAt()等效
    
2 字符串操作方法    
concat()        //拼接字符串,等效于+,+更常用    
slice(start,end)         //从start位置开始,截取到end位置,end取不到   
 substring(start,end)     //从start位置开始,截取到end位置,end取不到    
substr(start,length)         从start位置开始,截取length个字符    
indexOf()       //返回指定内容在元字符串中的位置,,如果没有,返回-1;(从前往后,检索到第一个就结束)    
lastIndexOf()   //返回指定内容在元字符串中的位置,,如果没有,返回-1;(从后往前,检索到第一个就结束)    
trim()          //只能去除字符串前后的空白    大小写转换方法    
toUpperCase()   //转换大写    
toLowerCase()   //转换小写    
search()//方法用于检索字符串中指定的子字符串,返回子字符串的起始位置    
replace(old,new) //替换字符串替换字符串 new替换old    
split() //分割字符串 返回的是一个数组。。数组的元素就是以参数的分割的

                                       位置方法:indexOf()都是找位置 返回索引值 没有找到返回 -1,第一次出现位置
                                                       lastInfexOf()如果没找到返回-1,元素最后一次出现的位置
                                       
                                        数组迭代:forEach()  方法用于调用数组的每个元素,并将元素传递给回调函数
                                                         every() some()方法用于检测数组所有元素是否都符合指定条件(通过函数提供)。
                                                         some(),every()方法的参数是一个回调函数,回调函数中的第一个参数是数组的元素,第二个参数是数组的索引
                                                         some(),every()方法都会返回新的数组   
                                                         every():判断回调函数中的表达式是否全部满足,如果满足,返回值就是true,只要有一个不满足就是false
                                                         some判断回调函数中的表达式是否有一个满足,如果至少一个满足,返回值就是true
                                                          
                                                         filter ()与map ():
                                                                                 filter()根据指定条件过滤元素,返回新数组 ;
                                                                                 map()数根据数学运算,返回新数组
                                        
                                        清空数组:arr=【】,arr.length=0,arr.splice(0.arr.length)

                                        数组转化字符串:
                                                                  join()数组转化为字符串,以参数分割

算术运算符:+,-,*,/,(%取余)

一元运算符:++ 自身加1,-- 自身减1,前置++: 参与运算输出,后置++:运算完毕输出

逻辑运算符:&&并且,两端都是true才是true,一个为false都是false
||或,两端有一个true就是true
!取反:true是false,false是true

关系运算符:==判断相等,比较值
===判断相等,比较值和数据类型
字符串大小的比较:如果两个字符串中都是全数字,只需比较两个首字符串数字的大小
如果等号两侧有一个是数字类型,则将字符串转化为数字再进行比较

赋值运算符:= += -= *= /= %= , num += 5; 相当于 num = num + 5;

运算符的优先级:括号>点运算符>一元运算符> 算数运算符 >关系运算符>逻辑运算符 >赋值运算符
一元运算符优先级: ++ –
算数运算符优先级: 先* / % 后 + -
关系运算符优先级 > >= < <= == != === !==
逻辑运算符优先级 先&& 后|| !

分支结构:
if语句:只有条件为true时,使用该语句
if else语句:当条件为true时执行if大括号中的代码,为false时执行else中的代码
if else if语句:可以写多个条件,以及执行多个代码

用户输入框:prompt,输入框接收到的内容都是字符串类型

          三元运算符:条件?结果1:结果2,条件成立时运行结果1,否则运行结果2

          switch语句:使用switch括号中的变量和case后的数据做等值判断,如果相等执行case中的代码
                              case可以有多个,如果都不相等,执行defau结构,defaultk可以省略,break用在
                              switch中,表示结束switch,如果没有则程序会继续向下运行

          布尔类型隐式转换:0  ‘’ null    undefined     false  这些是false,其余都是true   1

循环结构:
while语句:while(循环条件){循环体 变量迭代} (语法结构)
什么时候停止循环(循环条件)重复动作(循环体) 变量++(变量迭代)
do while语句:do{循环体 变量迭代 } while(循环条件)(语法结构)
无论条件成不成立,都先执行一遍

for语句:(初始变量;循环条件;变量迭代){循环体}   (语法结构)
                            可以固定循环次数
                            特殊写法:初始变量,变量迭代可以拿出来,但是分号不能省略

for循环多个变量判断:可以有多个初始变量,循环条件,变量迭代,之间用逗号隔开,当最后一个
循环满足后就停止循环

嵌套循环执行原理:外层执行一次,内层执行一遍

用嵌套循环打印图形:外层是行,内层是每行的数量

break:结束整个循环,执行循环以外的代码(满足循环条件后执行)
可以用在switch和循环中
continue:结束本次循环,执行下一次(直接在变量迭代开始)
只能用在循环中

调试:alert()弹窗
console.log()打印到工作台
debugger关键字:用于停止js,并调用调试工具
断点调试:f12 f10 f8

数组:
创建数组:var 变量名【】,数组中的内容用括号隔开
数组的下标是从0开始,获取数组中的下标,用 数组名【下标】
用变量名.lenght获取数组长度
变量名.length=0,设置数组长度为0,代表清空数组

遍历数组:for(var 变量名=0;变量<数组名.lenght;变量名++)

数组赋值:变量名【下标】,可以覆盖原本的数组,也可以新增数组,如不按顺序来就会出现undifferentiated
变量名.push(’内容‘)只能新增

break有就近原则,离着谁近结束那个循环

函数命名规则:字母,数字,下划线,$符号组成,不能以数字开头,不能有关键字,保留字,区分大小写,驼峰命名法。

函数定义: 用function 函数名(){}  (函数声明), var 变量名  function(){}

(函数表达式)

函数的调用:用函数名()来调用,可以多次调用,只有调用才能执行函数

   函数的参数:function  函数名(变量名,变量名2){}(带参数的函数声0明),   
   函数名(变量值1,变量值2)(带参数的函数调用)

   函数的返回值:返回值的语法function函数名(变量名1,变量名2){}
   return返回值必须写在函数最后面, return后面的内容不会执行,没有return,或者后面没有值,会显示undrfined
   返回值的调用:var   return=变量名(1, 2)

   函数覆盖:两个声明函数名相同,后面会覆盖前面的
   相同函数名的调用:会调用离着调用函数最近的
   同名函数表达式,向上就近原则,调用离他最近的
 
   函数的内置对象:argumrnts:callee属性:函数的本身
                                                  callee.name:函数的名字
                                                  length属性:实参的个数
                                                  callee.length:形参的个数

   匿名函数:匿名函数不能被调用来执行,只能用括号把函数声明括起来,来自调用
   
   函数是一种引用数据类型,(focntion)
   因为函数也是一种类型,可以把函数作为参数传进去,也可以返出来

   回调函数:在主函数执行完后执行的函数,调用方法,函数名(回调函数名)

   同步任务:一个一个执行任务,只有前一个执行完后一个才执行
   异步任务:同时执行多个任务
   异步机制:所有同步任务都在主线程上执行,行成一个执行栈,主线程之外,还存在一个任务队列,只要异步任务有了结果,就会在任务队列中放置一个事件
                    一旦执行栈中的所有同步任务执行完毕,系统就会读取任务队列,看看里面还有哪些事件,那些对应的异步任务,于是结束等待状态,进入执行栈,开始执行
                   主线程不断的重复上面的第三步
   异步编程主要有:setTimeout,ajax回调函数,promise对象,generator函数,事件机制
   
   预解析:在js引擎执行js代码之前,会将function,var开头的函数提前解析,
                var只会解析声明,所以结果是变量没有赋值
   
   同名函数预解析:同名函数,后面会覆盖前面的,所以结果是后面的
   
   变量声明和函数同名:当出现变量声明和函数同名的时候,只会对函数声明进行提升,变量会被忽略,
                                    按照常规的书写顺序,同名的函数与变量,变量会覆盖函数

作用域:
全局作用域:直接写在script或者在JS文件中的代码,全是全局作用域,也都可以通过window.出来
全局函数是window方法
局部作用域:在函数中的范围成为局部作用域,局部作用域,仅在内部生效
调用函数时,作用域生效,执行完函数作用域失效,每调用一次函数就会创建一个新的作用域
他们之间是独立的
隐式全局作用域:没有var,视为隐式全局变量

对象创建方式:
创建对象字面量方式:var 变量名={属性 }},属性之间用逗号隔开

new Object()创建对象:用var 变量名=new Object()来创建

                   工厂函数创建对象: createPerson函数是创建多个函数

                   自定义构造函数:是在创建对象时调用的函数,一边情况下,构造函数名首字母大写

属性和方法:如果一个变量属于一个对象所有,那么该变量就可以称之为该对象的一个属性,属性一般是名词,用来描述事物的特,征
如果一个函数属于一个对象所有,那么该函数就可以称之为该对象的一个方法,方法是动词,描述事物的行为和功能

new关键字:构造函数用于创建一类对象,首字母要大写。构造函数要和new一起使用才有意义。
new在执行时会做四件事情:
1、new会在内存中创建一个新的空对象
2、new会让this指向这个新的对象
3、new会返回这个新对象

this的作用:一般函数直接执行,内部this指向window
this写在对象的方法中,被该对象所调用,this指向该对象

对象使用:通过for in可以遍历一个对象 ,创建一个变量,这个变量每次都会拿到一个属性方法
for in语法结构:for(var 变量名 in 对象名)
delete 对象名.属性 (删除对象属性)

try和catch:try里面放可能出错的代码
catch当try出现错误时,会执行catch中的代码
try没有错误时,不会执行catch,当遇到错误,立马执行catch,try后面的代码不会执行

finally语句:无论try和catch执不执行,都会执行finally里的代码

throw语句:可以自定义错误,需要使用catch结构来捕获,alert(error)参数

内置对象:
Math对象:
常用属性:Math.Pl 圆周率
常用方法:Math.random()生成随机数0~1之间
Math.floor()向下取整12.5 12
Math.ceil()向上取整12.5 13
Math.round()取整四舍五入
Math.abs() 绝对值
Math.max() 最大值
Math.min() 最小值
Math.sin() 正弦
Math.cos() 余弦
Math.pow() 求指数次幂
Math.sqrt() 求平方根

随机数公式:Math.floor(Math.random()*(最大值-最小值)+最小值)
           
            Date对象:Date是个构造函数,用var 变量名 = new Date()获取当前系统时间,如果括号里写数字,所有日期就会按照写的数字来出日期

            字符串对象:用var  变量名 = new String(‘内容’)创建
                               字符方法:    charAt()        //获取指定位置处字符    charCodeAt()    //获取指定位置处字符的ASCII码    str[0]          //HTML5,IE8+支持 和charAt()等效    2 字符串操作方法    concat()        //拼接字符串,等效于+,+更常用    slice(start,end)         //从start位置开始,截取到end位置,end取不到    substring(start,end)     //从start位置开始,截取到end位置,end取不到    substr(start,length)         从start位置开始,截取length个字符    indexOf()       //返回指定内容在元字符串中的位置,,如果没有,返回-1;(从前往后,检索到第一个就结束)    lastIndexOf()   //返回指定内容在元字符串中的位置,,如果没有,返回-1;(从后往前,检索到第一个就结束)    trim()          //只能去除字符串前后的空白    大小写转换方法    toUpperCase()   //转换大写    toLowerCase()   //转换小写    search()//方法用于检索字符串中指定的子字符串,返回子字符串的起始位置    replace(old,new) //替换字符串替换字符串 new替换old    split() //分割字符串 返回的是一个数组。。数组的元素就是以参数的分割的
           
             Array对象: 
                              创建数组:   
                                              字面量创建:var  变量名=【值1,值2】
                                              关键字创建:var  变量名= nwe Array(值1,值2)
                                 
                               检测一个变量是否是数组:
                                                                      instanceof返回true就是数组,如果返回false就不是数组
                                                                      Array.isArray()返回true就是数组,如果返回false就不是数组
                                                                      valueOf()返回数组本身

                                栈操作(先进后出):push()添加元素,末尾添加
                                                                  pop()删除元素,末尾删除

                                 队列操作(先进先出):shift()删除元素,开头删除
                                                                      unshift()添加元素,开头添加
                                 
                                 排序方法:reversr()反转数组,         
                                                  sort()数组排序
                                  
                                  操作方法:concat() 把参数拼接到当前数组、 或者用于连接两个或多个数组 
                                                   slice(开始下标,结束下标)

                                   截取数组:charAt()        //获取指定位置处字符

charCodeAt() //获取指定位置处字符的ASCII码
str[0]   //HTML5,IE8+支持 和charAt()等效

2 字符串操作方法
concat()   //拼接字符串,等效于+,+更常用
slice(start,end)   //从start位置开始,截取到end位置,end取不到
substring(start,end) //从start位置开始,截取到end位置,end取不到
substr(start,length)   从start位置开始,截取length个字符
indexOf()   //返回指定内容在元字符串中的位置,如果没有,返回-1;(从前往后,检索到第一个就结束)
lastIndexOf() //返回指定内容在元字符串中的位置,如果没有,返回-1;(从后往前,检索到第一个就结束)
trim() //只能去除字符串前后的空白 大小写转换方法
toUpperCase() //转换大写
toLowerCase() //转换小写
search()//方法用于检索字符串中指定的子字符串,返回子字符串的起始位置
replace(old,new) //替换字符串替换字符串 new替换old
split() //分割字符串 返回的是一个数组。。数组的元素就是以参数的分割的

位置方法:indexOf()都是找位置 返回索引值 没有找到返回 -1,第一次出现位置
                                                   lastInfexOf()如果没找到返回-1,元素最后一次出现的位置
                                   
                                    数组迭代:forEach()  方法用于调用数组的每个元素,并将元素传递给回调函数
                                                     every() some()方法用于检测数组所有元素是否都符合指定条件(通过函数提供)。
                                                     some(),every()方法的参数是一个回调函数,回调函数中的第一个参数是数组的元素,第二个参数是数组的索引

some(),every()方法都会返回新的数组
every():判断回调函数中的表达式是否全部满足,如果满足,返回值就是true,只要有一个不满足就是false
some判断回调函数中的表达式是否有一个满足,如果至少一个满足,返回值就是true

filter ()与map ():
                                                                             filter()根据指定条件过滤元素,返回新数组 ;
                                                                             map()数根据数学运算,返回新数组
                                    
                                    清空数组:arr=【】,arr.length=0,arr.splice(0.arr.length)

                                    数组转化字符串:
                                                              join()数组转化为字符串,以参数分割