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等控制语句并没有自己作用域;而函数是有自己的作用域的;

        //函数作用域
        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/yuanchenqi/articles/5980312.html

https://www.cnblogs.com/chichung/p/9696134.html

 

posted @ 2019-03-08 14:02  风追海浪  阅读(715)  评论(0编辑  收藏  举报