前端常用的库和实用技术之JavaScript高级技巧

Posted smart-girl

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了前端常用的库和实用技术之JavaScript高级技巧相关的知识,希望对你有一定的参考价值。

javascript高级技巧
变量作用域和闭包

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
</head>
<body>
    <script>
        // js是函数级作用域,在内部的变量内部都能访问,外部不能访问内部的,内部能访问外部的
        test();
        var j;
        j = 1000;
        function test()
            if(false)
                var i=10;
            else
                var t =100;
            
            console.log('bbb',t);
            console.log('cccc',j);
        
        alert('....',t);
    </script>
    <script>
        var j = 100;
        ~(function test()
            console.log(j);
        )();
        //100
        //-1
    </script>
    <script>
        var j =100;
        function test()
            var j;
            alert(j);//拿不到外面的J,里面的j值,war在前面
            j=10
        
        //执行test()根本取不到
        test()
    </script>
    <script>
        //闭包:闭包就是拿到本不属于它的东西
        var j = 100;
        function test()
            var j;
            j = 10;
            var k = 666;
            return function()
                return k;
            
            alert(j);
        
        var t = test()();
        alert(t);

    </script>
</body>
</html>

this指针的使用

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
</head>
<body>
    <script>
        // window.m = 100;
        // // this指针的使用
        // function test()
        //     alert(this.m);
        // 
        // window.test();

        this.m = 1000;
        var obj = 
            m:100,
            test:function()
                alert(this.m);
                return function()
                    alert(this.m);//
                
             
        
        // 谁调指向谁
        var t = obj.test()
        window.t();
        //上面等同于
    //    (obj.test()) ();
    </script>
</body>
</html>
<script>
        this.a = 1000;
        function test()
            this.a = 1;
        
        test.prototype.geta = function()
            return this.a;
        
        var p = new test;
        console.log(p.geta);
    </script>
    <script>
        function test()
            this.a = 1;
        
        test.prototype.a = 100;
        var p = new test;
        console.log(p);
    </script>
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
</head>
<body>
    <input type="button" id="test" value="test" style="color:red;">
    <script>
        var style = 
            color:"green"
        
        window.test();
        document.getElementById("test").click = test;
        function test()
            alert(this.style.color);
        
    </script>
</body>
</html>

按值传递和按引用传递

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
</head>
<body>
    <script>
        function test(num)
            //这里对num 创建了一个内存的副本
            var num = num+1;
            return num;
        
        var num = 1;
        alert(test(num));
        alert(num);
    </script>
    <script>
    function test(obj)
        obj.age = "20"
        console.log('内部obj',obj);
    
    var obj = 
        name:'xiaoming'
    
    test(obj);
    console.log('外部的..',obj);
    </script>
</body>
</html>

by上面的例子其实不够经典也不够高级
本文看自前端常用的库和实用技术之JavaScript按值传递和按引用传递

以上是关于前端常用的库和实用技术之JavaScript高级技巧的主要内容,如果未能解决你的问题,请参考以下文章

别了,jQuery!

67 个前端开发者的工具库和资源

67个拯救前端开发者的工具,库和资源

javascript之基础篇

资源收集——67 个拯救前端开发者的工具库和资源

前端常用缓存技术