zoukankan      html  css  js  c++  java
  • JS 字符串对象 数组对象 函数对象 函数作用域

    一.内置对象

    object对象ECMAScript 中的所有对象都由这个对象继承而来;Object 对象中的所有属性和方法都会出现在其他对象中

    ToString() :  返回对象的原始字符串表示。
    ValueOf() : 返回最适合该对象的原始值。对于许多对象,该方法返回的值都与 ToString() 的返回值相同

    11种内置对象

    包括:

    Array ,String , Date, Math, Boolean, Number  Function, Global, Error, RegExp , Object

    复制代码
    <script language="javascript">
    var aa=Number.MAX_VALUE; 
    //利用数字对象获取可表示最大数
    
    var bb=new String("hello JavaScript"); 
    //创建字符串对象
    
    var cc=new Date();
    //创建日期对象
    
    var dd=new Array("星期一","星期二","星期三","星期四"); 
    //数组对象
    </script>
    复制代码

    二.字符串对象

    复制代码
    <script>
        var str1 = "str1";
        var str2 = new String("str2");
        console.log(str1);
        console.log(str2);
        console.log(str1+str2);
    
        //字符串长度
        console.log(str2.length)
    
        //把字符串转换城整数[parseInt]或者小数[parseFloat]
        var num1="100元";
        var num2="1.23";
        console.log(parseInt(num1));
        console.log(parseFloat(num2));
        //输出:
        //100
        //1.23
    
    
        //split把字符串根据指定字符分割转换成数组
        var str="广东省-广州市-天河区";
        var ret=str.split("-");
        console.log(ret);
        //输出:
        //["广东省","广州市","天河区"]
    
    
       // indexOf查找字符串是否含有指定字符
        var str="广东省-广州市-天河区";
        var target="广州";
        console.log(str.indexOf(target));
        //输出:
        //4
        //注意,找不到返回的是-1。
    
    
        //substring截取字符串
        //用法: substring(开始的下标,结束的下标)
        var str="abcdef";
        console.log(str.substring(2,3));
        // 输出:
        //c
        
    </script>
    复制代码

    三:数组对象

    1.创建数组

    A.通过new Array()进行创建

    var arr1=new Array();

    B.通过中括号进行创建

    var arr2=[];

    2.数组方法

    复制代码
    <script>
        var arr1 = [11,22,33,44];
    
        //length 计算数组长度
        console.log(arr1.length);  //4
    
        //数组的下标 从0开始索引 注意:下标为-1表示没有这个元素,而不是倒数第一个!
        console.log(arr1[1]);  //22
    
        //获取成员在数组中的下标 indexOf
        console.log(arr1.indexOf(44));    //3
        console.log(arr1.indexOf(1111));  //-1
    
        //join拼接
        console.log(arr1.join("-"));  //11-22-33-44
    
        //tostring 对象变成字符串
        var ret = arr1.toString();
        console.log(ret);  //11,22,33,44
        console.log(typeof ret);  //string
    
        //反转排列
        console.log(arr1.reverse());  //[44, 33, 22, 11]
    
        //数组的删除元素
        //splice(删除开始的下标,删除的成员个数)
        //返回值就是被删除的元素组成的数组
        console.log(arr1.splice(1,2)); //22 33
        console.log(arr1);  //11 44
    
    
        //在数组的任意位置添加元素
        //splice(要插入的下标位置,0,[插入的元素])
        console.log(arr1.splice(1,0,"x","y")); //0表示不删除元素!1表示插入的位置!
        console.log(arr1);  //[11, "x", "y", 22, 33, 44]
    
        //栈操作
        //数组的末尾添加元素
        //push 表示给数组新增成员,返回结果是新的成员的数量!
        var ret=arr1.push("1","2");
        console.log(arr1);  //[11, 22, 33, 44, "1", "2"]
        console.log(ret);  //6
    
        //移除数组的最后一个成员
        //pop,返回值是被移除的元素!
        var ret=arr1.pop();
        console.log(ret);  //[11,22,33]
        console.log(arr5);  //44
    
        //sort排序
        var arr2 = [12,23,334,100];
        console.log(arr2.sort()); //[100, 12, 23, 334]
    
        //排序函数
        var arr2 = [12,23,334,100];
        function IntSort(a,b){
            return a-b;
        }
        console.log(arr2.sort(IntSort));  //[12, 23, 100, 334]
    
    
        //多维数组
        //多维数组就是数组的嵌套。二维数组就是嵌套两层,三维数组就是嵌套三层。
        var arr5=[
                ["a","b","c"],
                ["1","2","3"],
                ["x","y","z"],
                ];
        //多维数组成员的获取
        var arr5=[
                ["a","b","c"],
                ["1","2","3"],
                ["x","y","z"]
                ]
        console.log(arr5[1][2]);  //3
    
        // unshift shift
        //x.unshift(value,...)
        //x.shift()
        //使用注解
        //x代表数组对象
        //value可以为字符串、数字、数组等任何值
        //unshift是将value值插入到数组x的开始
        //shift是将数组x的第一个元素删除
    
        var arr1=[1,2,3];
        arr1.unshift(4,5);
        console.log(arr1); //结果为[4, 5, 1, 2, 3]
        arr1.unshift([6,7]);
        console.log(arr1); //结果为[Array(2), 4, 5, 1, 2, 3]
        arr1.shift();
        console.log(arr1);//结果为[4, 5, 1, 2, 3]
    
    </script>
    </body>
    </html>
    复制代码

    四.函数对象

    1.函数语法格式

    function 函数名 (参数){
函数体;
        return 返回值;
    }

    注意:js的函数加载执行与python不同,它是整体加载完才会执行,所以执行函数放在函数声明上面或下面都可以:

    2.函数调用

    复制代码
        function func1(a,b){
            alert(a+b);
        }
    
        func1(1,2);  //3
        func1(1,2,3);//3
        func1(1);    //NaN
        func1();     //NaN
    
        //只要函数名写对即可,参数怎么填都不报错.
    
    //-------------------面试题-----------
         function a(a,b){
            alert(a+b);
        }
        a(12,23); //35
        var a=1;
        var b=2;
        a(a,b)  //Uncaught TypeError: a is not a function
    复制代码

    3.函数的内置对象arguments

    复制代码
        function add(a, b) {
    
            console.log(a + b);//3
            console.log(arguments.length);//2
            console.log(arguments);//[1,2]
    
        }
    
        add(1, 2);
    
        //------------------arguments的用处1------------------
            function nxAdd() {
                var result = 0;
                for (var num in arguments) {
                    result += arguments[num];
                }
                alert(result) //15
    
            }
    
        nxAdd(1, 2, 3, 4, 5);
    
        //------------------arguments的用处2 ------------------
        function f(a, b, c) {
            if (arguments.length != 3) {
                //Uncaught Error: function f called with 5 arguments,but it just need 3 arguments
                throw new Error("function f called with " + arguments.length + " arguments,but it just need 3 arguments")
            }
            else {
                alert("success!")
            }
        }
    
        f(1, 2, 3, 4, 5)
    复制代码

    4.匿名函数

    匿名函数,没有函数名的函数,这种函数一般使用变量来存放。匿名函数的声明方式类似普通函数,一般使用变量保存起来

    语法格式
     
           (function(){
                //函数体
            })();   
    复制代码
            // 匿名函数 或者自执行函数
            var func = function(arg){
                return "tony";
            };
    
            //匿名函数的应用
            (function(){
                alert("tony");  //弹出tony
            } )();
    
            (function(arg){
                console.log(arg);
            })('123')  //123


      注意匿名函数整体有个括号括住的!

       还可以在函数定义前加上“~”和“!”等符号来定义匿名函数  

    !function(){
        alert('hello!');
    }()
    复制代码

     五.函数作用域

    函数的作用域链和闭包

    作用域

    js的作用域和py相似,if while等控制语句并没有自己作用域;而函数是有自己的作用域的;

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    //函数作用域
    if(1==1){
        var s=12;
    }
    console.log(s);//12
     
    function f(){
        var temp=666;
    }
    f();
    //console.log(temp);//Uncaught ReferenceError: temp is not defined
     
    //嵌套函数作用域
    var city = 'beijing';
    function func(){
        var city = 'shanghai';
        function inner(){
            var city = 'shenzhen';
            console.log(city);
        }
        inner();
    }
    func(); //shengzhen
     
     
    var city = 'beijing';
    function Bar(){
        console.log(city);
    }
    function func(){
     
        var city = 'shanghai';
        return Bar;
    }
    var ret = func();
    ret();    //beijing
     
     
    //闭包
    var city = 'beijing';
     
    function func(){
        var city = "shanghai";
        function inner(){
            //var city = "langfang";
            console.log(city);  //shanghai
        }
        return inner;
    }
    var ret = func();
    ret();

    原文:https://www.cnblogs.com/icemonkey/p/10495453.html

  • 相关阅读:
    一周最新示例代码回顾 (4/23–4/29)
    优酷的投票
    Google API获取用户信息
    CPU性能分析
    有意思的排序算法快速排序
    http响应LastModified和ETag以及asp.net web api实现
    java/C#多态漫谈
    有意思的排序算法插入排序
    [Architecture Pattern] Repository
    50个jQuery代码段帮你成为更出色的JS开发者
  • 原文地址:https://www.cnblogs.com/kelly-sunshine/p/10767782.html
Copyright © 2011-2022 走看看