• JavaScript 基础(二)


    创建 function 对象的两种方法:

    方式一(推荐)

      function func1(){
            alert(123);
            return 8
        }
    
        var ret = func1()
        alert(ret)
    
    

    方式二:var func2 = new Function("参数1", "参数n","函数体");

        var add = new Function("a", "b", "alert(a+b)")
        add(1,2);
        alert(add.length)
    

    arguments 对象

    获得参数的个数

      var ret=0;
      function add(){
        alert(arguments.length)
      }
      add(1,2,3,4,5)
    

    获得参数的个数和值的总额

        var ret = 0;
        function add(){
            console.log(arguments.length);
            console.log(arguments);
    
            for (var i in arguments){
                ret += arguments[i]
            }
            return ret;
        }
    
        alert(add(1,2,3,4))
    
    

    控制抛出异常

        function func2(){
            if (arguments.length != 3){
                throw new Error("param should be 3")
            }
        }
    
        func2(1,2,3,4)
    

    自执行函数

        (function(arg){console.log(arg);})('123')
    
    

    instanceof

    用于判断一个变量是否某个对象的实例

        var s = "hello";
        var i = 8;
    
        alert(typeof(s));
        alert(typeof(i));
    
        var s2 = new String("hello2");
        alert(typeof(s2))
        alert(s2 instanceof String);
    
        var n = new Number(2);
        alert(typeof(n))
        alert(n instanceof Number);
    

    在JavaScript中除了null和undefined以外其他的数据类型都被定义成了对象,也可以用创建对象的方法定义变量,String、Math、Array、Date、RegExp都是JavaScript中重要的内置对象,在JavaScript程序大多数功能都是通过对象实现的

    JavaScript 有 11 种内置对象, 包括:
    Array ,String , Date, Math, Boolean, Number Function, Global, Error, RegExp , Object

    String对象

    创建字符串对象:

        var s = "hello";
        var s2 = new String("hello2");
    
        alert(s);
        alert(s2);
    
    // String 对象 length 方法
        alert(s.length);
    
    // 遍历字符串
        for (var i in s){
            console.log(s[i])
        }
    
    

    各种方法

    // 用于把字符串显示为斜体
        document.write(s.italics());
    
    // 用于把字符串显示为粗体
        document.write(s.bold());
    
    // 用于创建 HTML 锚
        document.write(s.anchor("klvchen"));
    
    // 用于把字符串转化成大写
        console.log(s.toUpperCase());
    
    // 用于把字符串转化成小写
        console.log(s.toLowerCase());
    
    // charAt返回index位置的字符
        console.log(s.charAt(3));
    
    // charCodeAt返回index位置的Unicode编码
         console.log(s.charCodeAt(3));
    
    // search返回匹配字符串的首字符位置索引
        console.log(s.search("l"));
    
    // match返回匹配字符串的数组,如果没有匹配则返回null
        console.log(s.match("l"));
    
        console.log(s.match("l")[0]);        // 取数组里面的值
        console.log(s.match("l")[1]);
    
    // 替换子字符串
        console.log(s.replace("e","E"));
    
    // 分割字符串
        console.log(s.split("e"));
    
    // 连接字符串
        console.log(s.concat(" world"));
    
    // 截取子字符串,右不包括
        console.log(s.substr(1, 1));
        console.log(s.substring(1, 4));
        console.log(s.slice(1, -1));
    
    // 返回指定第一个元素的位置
        console.log(s.indexOf("l"));
    
    

    Array对象

    创建数组对象

    // 方法一:
        var arr = [1,2,3,4];
    
    // 方法二:
        var arr2 = new Array(1,2,3,4);
        //var arr2 = new Array(5, "hello", true, [1,2]);
    
    // 输出数组对象的长度
        console.log(arr.length);
        console.log(arr2.length);
    
    
    // 定义一个长度为3的数组,数组的值因未定义则默认为空
        var arr4 = new Array(3);
        console.log(arr4[0]);
        console.log(arr4[1]);
        console.log(arr4[2]);
    
    // 数组是可变成的
        var arr5 = new Array(3);
        arr5[5] = 10;
        console.log(arr5.length);
    
    // 二维数组
      var arr6 = new Array(6, "klvchen", true, [1,2]);
      alert(arr6[3][0]);
    
    // 连接数组-join方法
      ret = ["hello", "world"].join(" &&& ");
      alert(ret);
    
    // push pop这两个方法模拟的是一个栈操作, push 压栈, pop弹栈   
      var arr7 = [1, 4, 6];
      arr7.push(13);
      console.log(arr7);
      var ret = arr7.pop();
      alert(ret);
    
    // unshift shift。unshift是将value值插入到数组x的开始, shift是将数组x的第一个元素删除
      var arr7 = [1, 4, 6];
      arr7.unshift(45);
      console.log(arr7);
      arr7.shift();
      console.log(arr7);
    
    // 数组排序。reverse 作用为颠倒数组元素;sort 作用为排序数组元素
        var arr8 = [11, 5, 3, 7, 100];
        arr8.reverse();
        console.log(arr8);
        console.log(arr8.sort());
    
    // 按照从小到大排序
        var arr8 = [11, 5, 3, 7, 100];
    
        function mysort(a,b){
            if (a>b){
                return 1;
            }else if(a<b){
                return -1;
            }else{
                return 0;
            }
        }
    
        function mysort2(a,b){
            return a-b;
        }
    
        console.log(arr8.sort(mysort));
        console.log(arr8.sort(mysort2));
    
    

    作用域,作用域链

    • 作用域链在函数被解释的过程中已经创建(函数做为作用域)
    • 提前声明
  • 相关阅读:
    E437: terminal capability "cm" required 错误出现的原因和解决方法
    IDEA 配置svn及使用
    IDEA 2018.3.3注册方法-2100年
    三大UML建模工具Visio、Rational Rose、PowerDesign的区别
    地图展示聚合效果Leaflet.markercluster
    Idea设置Maven报错:Unable to import maven project: See logs for details
    Netflix大部分的推荐机制都是采用机器学习的算法
    Netflix推荐系统:从评分预测到消费者法则
    Netflix推荐系统的最新解读:算法、商业价值与创新
    推荐系统算法总结
  • 原文地址:https://www.cnblogs.com/klvchen/p/10281890.html
Copyright © 2020-2023  润新知