Skip to content
静心静心
HOME
DoubtfulCases
github icon
  • JAVASCRIPT

    • 封装Ajax
      • 面试题
        • 模块化JQuery
          • 深拷贝和浅拷贝
            • 有趣的javascript
              • 原型链
                • FAjax copy
                  • Javascrpt 中 方法
                    • JS获取数组的最后一项
                      • js正则正方向查找
                        • js重要
                          • 数字滚动
                            • 纯css手风琴
                              • JS设置全局变量
                                • JS 寄生式组合继承

                                有趣的javascript

                                author iconYYtimer icon大约 2 分钟

                                # 有趣的javascript

                                # 1、-->符号

                                function countdown(n) {
                                  while (n --> 0)  // "n goes to zero"
                                    alert(n);
                                  blastoff();
                                }
                                
                                
                                
                                --> 上面这段代码可以正常运行,循环会一直重复直到n趋于0,这当然不是ES6中的新特性
                                
                                1
                                2
                                3
                                4
                                5
                                6
                                7
                                8
                                9
                                总结来说:对于一个变量赋值,发生了两个不同的动作:第一,*编译器* 声明一个变量(如果先前没有在当前作用域中声明过),第二,当执行时,*引擎* 在 *作用域* 中查询这个变量并给它赋值,如果找到的话。
                                
                                1

                                # 2、什么是闭包

                                小姐姐的牵手、吃饭、购物.....这些属性。只能让我来访问 这就是闭包。
                                
                                把小姐姐当做一个函数,在她的内部创建一个函数,然后return这个函数。当她new一个对象。返回的函数始就是是我。只有我能访问 小姐姐这个函数的所有属性。这就是闭包。
                                
                                
                                for ( var i = 0 ; i < 5; i++ ) {
                                    setTimeout(function(){
                                        console.log(i);
                                    }, 0);
                                }
                                // 5 5 5 5 5
                                
                                
                                // 2
                                for ( var i = 0 ; i < 5; i++ ) {
                                    (function(j){
                                        setTimeout(function(){
                                            console.log(j);
                                        }, 0);
                                    })(i);
                                    // 这样更简洁
                                    // setTimeout(function(j) {
                                    //     console.log(j);
                                    // }, 0, i);
                                }
                                // 0 1 2 3 4
                                
                                setTimeout(function(j) {
                                    console.log(j);
                                }, 0, i);
                                
                                // 3
                                for ( let i = 0 ; i < 5; i++ ) {
                                    setTimeout(function(){
                                        console.log(i);
                                    },0);
                                }
                                // 0 1 2 3 4
                                
                                
                                // 4
                                var scope = 'global scope';
                                function checkscope(){
                                    var scope = 'local scope';
                                    console.log(scope);
                                }
                                // local scope
                                
                                
                                // 5
                                var scope = 'global scope';
                                function checkscope(){
                                    var scope = 'local scope';
                                    return function f(){
                                        console.log(scope);
                                    };
                                }
                                var fn = checkscope(); 
                                console.log(fn()); // local scope
                                
                                
                                // 6
                                var scope = 'global scope';
                                function checkscope(){
                                    var scope = 'local scope';
                                    return function f(){
                                        console.log(scope);
                                    };
                                }
                                checkscope()(); // local scope
                                
                                
                                var obj = {
                                    name: 'tom',
                                    sayName() {
                                        console.log(this.name);
                                    }
                                }
                                obj.sayName(); // tom
                                
                                
                                var obj = {
                                    name: 'tom',
                                    sayName() {
                                        var name = 'alan';
                                        console.log(this.name);
                                    }
                                }
                                obj.sayName();// 'tom'
                                
                                var name = 'jerry';   
                                var obj = {  
                                    name : 'tom',  
                                    sayName(){  
                                        return function(){  
                                            console.log(this.name);  
                                        };
                                    }   
                                };  
                                obj.sayName()(); // jerry
                                
                                // var name = 'jerry';
                                var obj = {
                                    name: 'tom',
                                    sayName() {
                                        var name = 'alan';
                                        console.log(this.name);
                                    }
                                };
                                var sayName = obj.sayName;
                                sayName(); // '' // jerry
                                
                                
                                
                                
                                function fun(a,b) {
                                    console.log(b)
                                    return {
                                        fun: function(c) {
                                            return fun(c,a);
                                        }
                                    };
                                }
                                var d = fun(0); // undefined
                                d.fun(1); // 2 0
                                d.fun(2); // 2 0
                                d.fun(3); // 2 0
                                
                                var d1 = fun(0).fun(1).fun(2).fun(3);
                                // 2 undefined 2 0
                                // 2 1
                                // 2 2
                                
                                var d2 = fun(0).fun(1); d2.fun(2);
                                // 2 undefined
                                // 2 0
                                // 2 1
                                // 2 1
                                
                                d2.fun(3); // {fun: ƒ}
                                
                                
                                原文链接:https://juejin.cn/post/6911473286627098638
                                
                                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
                                52
                                53
                                54
                                55
                                56
                                57
                                58
                                59
                                60
                                61
                                62
                                63
                                64
                                65
                                66
                                67
                                68
                                69
                                70
                                71
                                72
                                73
                                74
                                75
                                76
                                77
                                78
                                79
                                80
                                81
                                82
                                83
                                84
                                85
                                86
                                87
                                88
                                89
                                90
                                91
                                92
                                93
                                94
                                95
                                96
                                97
                                98
                                99
                                100
                                101
                                102
                                103
                                104
                                105
                                106
                                107
                                108
                                109
                                110
                                111
                                112
                                113
                                114
                                115
                                116
                                117
                                118
                                119
                                120
                                121
                                122
                                123
                                124
                                125
                                126
                                127
                                128
                                129
                                130
                                131
                                132
                                133
                                134
                                135
                                136
                                137
                                138
                                139
                                140
                                141
                                142
                                143

                                # 3、写出自己的filter方法

                                    var arra1 = [1, 3, 4, 50, 22];
                                    Array.prototype.myfilter = function (fn) {
                                        var list = this;
                                        var h = [];
                                        for (var i of list) {
                                            if(fn(i) == true){
                                                h.push(i)
                                            }
                                        }
                                        return h;
                                    }
                                    var arra = arra1.myfilter(
                                        function (a) {
                                            return a == 2
                                        }
                                    );
                                
                                1
                                2
                                3
                                4
                                5
                                6
                                7
                                8
                                9
                                10
                                11
                                12
                                13
                                14
                                15
                                16

                                # 4、模拟let中加入定时器方法

                                  	let i = 1;
                                    for (i; i < 5; i++) {
                                        setInterval(() => {
                                            console.log(i);
                                
                                        }, i * 100);
                                    }
                                
                                    for (let i =1; i < 5; i++) {
                                        setInterval(() => {
                                            console.logs(i);
                                            
                                        }, i * 100);
                                    }
                                    
                                  一定要记住,for循环的本质为递归操作,每次循环都要赋值操作。
                                    
                                
                                1
                                2
                                3
                                4
                                5
                                6
                                7
                                8
                                9
                                10
                                11
                                12
                                13
                                14
                                15
                                16
                                17
                                edit icon编辑此页open in new window
                                上一页
                                深拷贝和浅拷贝
                                下一页
                                原型链
                                傻瓜都能写出计算机可以理解的代码。唯有能写出人类容易理解的代码的,才是优秀的程序员。
                                Copyright © 2022 YY

                                该应用可以安装在您的 PC 或移动设备上。这将使该 Web 应用程序外观和行为与其他应用程序相同。它将在出现在应用程序列表中,并可以固定到主屏幕,开始菜单或任务栏。此 Web 应用程序还将能够与其他应用程序和您的操作系统安全地进行交互。

                                详情