zoukankan      html  css  js  c++  java
  • 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));
    
    

    作用域,作用域链

    • 作用域链在函数被解释的过程中已经创建(函数做为作用域)
    • 提前声明
  • 相关阅读:
    CodeForces 510C Fox And Names (拓扑排序)
    Codeforces 1153D Serval and Rooted Tree (简单树形DP)
    HDU 6437 Problem L.Videos (最大费用)【费用流】
    Luogu P3381 (模板题) 最小费用最大流
    Codeforces 741B Arpa's weak amphitheater and Mehrdad's valuable Hoses (并查集+分组背包)
    Codeforces 1144F Graph Without Long Directed Paths (DFS染色+构造)
    HDU 2204 Eddy's 爱好 (容斥原理)
    Codeforces 939E Maximize! (三分 || 尺取)
    Codeforces 938D. Buy a Ticket (最短路+建图)
    CodeForces 959E Mahmoud and Ehab and the xor-MST (MST+找规律)
  • 原文地址:https://www.cnblogs.com/klvchen/p/10281890.html
Copyright © 2011-2022 走看看