欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

JS语法基础

程序员文章站 2022-03-11 13:41:34
...
  1. javascript是最流行的,而且是唯一的写"前端脚本"的编程语言。

  2. JS主要有两部分组成:变量和函数。

  3. js数据类型分为二大类: 原始类型与引用类型;;js不允许自定义数据类型,因为js是动态的,可以模拟出任何类型,不需要自定义
    (2). 原始类型: String字符串;Number数值(不区分整数和浮点数);Boolean布尔;Undefined未定义;Null类型
    (3). 引用类型:[Object对象,;Array数组]重点掌握;Function函数; Date日期;RegExp正则; 包装对象...

  4. JS中:用户生函数,函数生对象,对象生万物。  一切皆对象。

  5. JS中函数分类:

    函数声明:函数声明自动提前:因为函数如此重要,所以函数声明会自动提升到代码最前面,不论在脚本的什么地方声明,都可以直接使用。外部声明的变量,函数内部可以使用;函数内部声明的变量,外部不能使用。

    函数表达式:函数表达式就是一个值:let fn = function(){ return 200; }

    匿名函数:匿名函数主要用于函数的传参。eg: [1,2,3,4].filter(function( item, index, array){ return item>3; })  返回[4]

    filter是一个数组过滤函数,会为每一个数组元素执行该方法,返回过滤后的数组;item必填,是当前数组元素的值,index是元素的索引,array是当前元素属于的数组对象。

    自执行函数:eg: ( function( a, b ){ return a+b; } )(20, 50): 直接就将20与50传参给了a和b。


  6.  js根本不在乎函数有没有参数,以及参数有多少,是什么类型;
     因为在内部是使用一个数组来接收这些参数,并使用对象 arguments 来访问这个数组。

    //声明
            function add() {
                var num = arguments.length
                switch (num) {
                    case 0:
                        return '至少要有一个参数'
                        break
                    case 1:
                        return arguments[0]
                        break
                    case 2:
                        return arguments [0]+arguments[1]
                        break
                    case 3:
                        return arguments[0]+arguments[1]+arguments[2]
                        break
                    default:
                        return '参数过多'
                }
            }
            //调用
            add() // '至少要有一个参数'
            add(100) // 100
            add(100,200)  // 300
            add(100,200,300) // 600
            add(100,200,300,400) // '参数过多'

    运行实例 »

    点击 "运行实例" 按钮查看在线实例

  7. 创建新数组
       (1):基于当前数组中的所有项,创建一个新数组: concat()
           var arr = [1,2,3]
           arr.concat(4,5)     // 返回5个元素的新数组:[1, 2, 3, 4, 5]
           arr.concat([6,7,8]) // 接受数组参数,这个数组会拆开,将每一个元素并入原数组中:[1, 2, 3, 6, 7, 8]
       (2).基于数组的开始与结束的位置来创建: slice() 单词本意: 切开
           slice(起始索引[,结束索引]),如省略结束索引,默认为后面全部数据
           var arr = [10,20,30,40,50]
           arr.slice(2)        // 从索引2开始,获取后面全部内容: [30, 40, 50]
           arr.slice(1,4)      // 从索引1开始,到索引4结束(不含索引4): [20, 30, 40]
       (3).向数组中间插入数据: splice(), 功能主要是: [删除,插入,替换]
           参数说明: splice(start,length,value...)
           1). 删除
           arr.splice(起始,删除数)
           var arr = [10,20,30,40,50]
           arr.splice(0,2)     // 从头部0,开始删除2个,返回删除的元素: [10, 20]

           2). 插入
           arr.splice(起始,0,要插入项)
           arr.splice(1,0,88,99) //第二个参数0,表示插入,插入的数据是第三个参数
           //本例是从第二个元素起,插入二个新元素:88,99:
           arr     // 查看当前数组: [30, 88, 99, 40, 50]

           3). 替换
           arr.splice(起始,删除数,要插入项)
           arr.splice(2,1,'dog','cat')     // 返回删除项: 99
           arr     // 查看数组: [30, 88, "dog", "cat", 40, 50]

  8. 数组的反转:arr.reverse()

    数组的排序:sort():

    var arr = [10,4,22,8,2]
    arr.sort()      // [10, 2, 22, 4, 8]:显然错误,因为sort()默认将元素视为字符串,'10'显然是小'2'
    //解决方案: sort()可接受一个回调参数,在回调函数中进行比较运算完成正确排序
    function compare(val1,val2){
      if (val1 < val2) {
         return -1
      } else if (val1 > val2) {
          return 1
      } else {
          return 0
      }
    }

    ***对于数值型元素的比较,这个回调函数可以进行简化:
    function compare(val1,val2) {
       return val - val2  //升序
    }

    arr.sort(compare)       // 输出正确结果:[2, 4, 8, 10, 22]
    //如果改为降序排列,只需要改变回调中的返回值即可
    function compare(val1, val2) {
       return val2-val1   //降序: 用第二个参数减去第一个参数即可
    }

    arr.sort(compare)   // 降序: [22, 10, 8, 4, 2]