法纳尔森林里的古老月桂树,马德拉群岛,葡萄牙 (© Lukas Jonaitis/Shutterstock)

Welcom to 评论 - lizhenqiu blog!

    #1179

    作者:广西南宁市
    jQuery中的on与bind绑定事件区别实例详解

    bind与on的区别就在于–事件冒泡,关于jquery中的on与bind绑定事件的区别通过本文给大家实例讲解,需要的朋友参考下吧
    on(events,[selector],[data],fn)
    events:一个或多个用空格分隔的事件类型和可选的命名空间,如”click”或”keydown.myPlugin” 。
    selector:一个选择器字符串用于过滤器的触发事件的选择器元素的后代.
    data:当一个事件被触发时要传递event.data给事件处理函数。
    fn:该事件被触发时执行的函数。 false 值也可以做一个函数的简写,返回false。
    bind(type,[data],fn)
    为每个匹配元素的特定事件绑定事件处理函数。
    jQuery 3.0中已弃用此方法,请用 on()代替。
    参数类型跟前面那个on一样.

    bind与on的区别就在于–事件冒泡
    demo1:
    ## 点击相应的li弹出里面内容,这里把on换成bind是一样的没有区别.也就是说on不使用selector属性与bind并无区别
    <ul> <li>1</li> <li>2</li> <li>3</li> </ul> <script> $(function () { $('ul li').on('click',function(){ alert($(this).text()) }); }) </script>
    Run code
    Cut to clipboard

      demo2:
      <script> // 这种情况你会发现点击第四个不具备事件.也就是不具备动态绑定事件能力 $(function () { $('ul li').bind('click',function(){ alert($(this).text()) }); var ok = $('<li>4</li>'); $('ul').last().append(ok); }) </script>
      Run code
      Cut to clipboard

        demo3
        <script> // 换成on的写法,添加selector属性,就是通过事件冒泡,进行了事件委托,把li的事件委托给其父元素,点击后面加入的li就默认绑定了事件 $(function () { $('ul').on('click','li',function(){ alert($(this).text()) }); var ok = $('<li>4</li>'); $('ul').last().append(ok); }) </script>
        Run code
        Cut to clipboard

          事件委托的好处
          万一子元素非常多,给每个子元素都添加一个事件,会影响到性能;
          为动态添加的元素也能绑上指定事件;
          #,广西南宁市,2017-07-14,15:51:44, javascript取网页DOM自定义属性值和设置自定义属性值的通用方法
          HTML元素,属性已经十分丰富了。但是,在某些场合下,也会显得捉襟见肘,这时候自定义属性就发挥了十分关键的作用。 Html元素的自定义属性,使用起来,十分方便,例如: <input type=”button” value=”Click Me, Baby!” /> 假设我们现在需要限制,这个按钮,只能点击2次,然后就失效了。 通常的实现方式,是可以利用全局变量的形式来记录点击次数,但我们这里用自定义属性来实现这个功能,展示一下自定义属性的优势;我们对上面的button做一下改造: <input type=”button” value=”Click Me, Baby!” clickCount=”0” /> 可以看到,我为这个button 增加了一个自定义属性 clickCount, 并将初始值设为 0;下面我们来写实现功能的js代码: 1. 给 button 增加click事件的处理 <input type=”button” value=”Click Me, Baby!” clickCount=”0” onclick=”customAttributeDemo(this);" /> 2. 我们来写 customAttributeDemo(obj) 这个函数 对于IE来讲,使用自定义属性非常简单,因为IE自动将自定义属性解析到了DOM中,和标准属性没有任何区别,IE下的版本: function customAttributeDemo(obj) { if (obj.clickCount === '0') { obj.clickCount = '1'; } else { obj.disabled = true; } } 上面的代码在 FireFox 下将失效,因为FireFox对自定义属性的使用,限制更高,只能使用 attributes[] 集合来访问,FireFox 下的代码: function customAttributeDemo(obj) { if (obj.attributes['clickCount'].nodeValue === '0') { obj.attributes['clickCount'].nodeValue = '1'; } else { obj.disabled = true; } } 上面的代码,也适用于IE,所以,这个代码,就是具有兼容性的代码了,嘿嘿 感谢小秦网友的交流,他给出了 getAttribute 和 setAttribute 的方法: function customAttributeDemo(obj) { if (obj.getAttribute('clickCount') === '0') obj.setAttribute('clickCount', '1'); else obj.disabled = true; }
          Run code
          Cut to clipboard
            文章:书写更漂亮规范的js代码  发表时间:2017-07-13, 17:46:03  
            展开↯

            #1180

            作者:广西南宁市
            javascript 的 "!function" 是什么意思?
            这种叫自执行函数表达式
            在这种情况下,解析器在解析function关键字的时候,会将相应的代码解析成function表达式,而不是function声明。
            // 下面2个括弧()都会立即执行 (function () { /* code */ } ()); // 推荐使用这个 (function () { /* code */ })(); // 但是这个也是可以用的 // 由于括弧()和JS的&&,异或,逗号等操作符是在函数表达式和函数声明上消除歧义的 // 所以一旦解析器知道其中一个已经是表达式了,其它的也都默认为表达式了 var i = function () { return 10; } (); true && function () { /* code */ } (); 0, function () { /* code */ } (); // 如果你不在意返回值,或者不怕难以阅读 // 你甚至可以在function前面加一元操作符号 !function () { /* code */ } (); ~function () { /* code */ } (); -function () { /* code */ } (); +function () { /* code */ } ();
            Run code
            Cut to clipboard
              #,广西南宁市,2017-07-13,15:17:20,
              <script> var s=function(){ return 1; } alert(s()); alert(s); </script>
              Run code
              Cut to clipboard
                #,广西南宁市,2017-07-13,15:18:13,@1,
                <script> var s=function(n){ return n; } alert(s(2)); alert(s); </script>
                Run code
                Cut to clipboard
                  #,广西南宁市,2017-07-13,15:19:28, 叹号后面跟函数!function
                  和加号后面跟函数+function
                  都是跟(function(){})();这个函数是一个意思,都是告诉浏览器自动运行这个匿名函数的,因为!+()这些符号的运算符是最高的,所以会先运行它们后面的函数
                  #,广西南宁市,2017-07-13,15:23:07,
                  还有比如x=x||{}; (function(){})();
                  Run code
                  Cut to clipboard

                    var x=1 || 2 || 3;x值为1或者2或者3 x=2||3;x值为2或者3 var a=1||2; var b=2||3; a&b结果是2
                    Run code
                    Cut to clipboard

                      js 中 var v=v || [] ;这种写法有什么意义?为什么不直接var v='';
                      这种写法就是如果v为null和undefined的就赋值[]
                      js 这种写法是什么意思 var a= b || c
                      在js中,这相当于一个赋值语句,如果b的值大于0或为true,那么就把b的值赋给a,否在就把c的值赋给a   布尔值,javascript中以下值会被转换为false   false   undefined   null   0   -0   NaN   ""   ''
                      Run code
                      Cut to clipboard
                        #,广西南宁市,2017-07-14,09:50:48,
                        +号把字符串转成了整数
                        <script> var n='5'; console.log(n.constructor); console.log((+n).constructor); console.log(typeof(n)); console.log(typeof(+n)); console.log(isNaN(n)); //console.log(Number.n); console.log(Number.NaN); </script>
                        Run code
                        Cut to clipboard
                          #,广西南宁市,2017-07-14,09:57:18,
                          #,广西南宁市,2017-07-14,10:03:38,
                          箭头函数
                          var nums = [4, 8, 1, 9, 0]; nums.sort(a, b => b - a); setTimeout(() => console.log("hi"), 3000);
                          Run code
                          Cut to clipboard
                            #,广西南宁市,2017-07-14,10:22:58,
                            JavaScript 中反单引号 ` ` function () { return `${this.index * (100 / this.number)}%`; }
                            Run code
                            Cut to clipboard

                              模板字符串

                              传统的JavaScript语言,输出模板通常是这样写的。
                              $('#result').append( 'There are <b>' + basket.count + '</b> ' + 'items in your basket, ' + '<em>' + basket.onSale + '</em> are on sale!' );
                              Run code
                              Cut to clipboard

                                上面这种写法相当繁琐不方便,ES6引入了模板字符串解决这个问题。
                                $('#result').append(` There are <b>${basket.count}</b> items in your basket, <em>${basket.onSale}</em> are on sale! `);
                                Run code
                                Cut to clipboard

                                  模板字符串(template string)是增强版的字符串,用
                                  反引号(`)
                                  Run code
                                  Cut to clipboard
                                    标识。它可以当作普通字符串使用,也可以用来定义多行字符串,或者在字符串中嵌入变量。
                                    // 普通字符串 `In JavaScript '\n' is a line-feed.` // 多行字符串 `In JavaScript this is not legal.` console.log(`string text line 1 string text line 2`); // 字符串中嵌入变量 var name = "Bob", time = "today"; `Hello ${name}, how are you ${time}?`
                                    Run code
                                    Cut to clipboard

                                      上面代码中的模板字符串,都是用反引号表示。如果在模板字符串中需要使用反引号,则前面要用反斜杠转义。
                                      var greeting = `\`Yo\` World!`;
                                      Run code
                                      Cut to clipboard

                                        如果使用模板字符串表示多行字符串,所有的空格和缩进都会被保留在输出之中。
                                        $('#list').html(` <ul> <li>first</li> <li>second</li> </ul> `);
                                        Run code
                                        Cut to clipboard

                                          上面代码中,所有模板字符串的空格和换行,都是被保留的,比如<ul>标签前面会有一个换行。如果你不想要这个换行,可以使用trim方法消除它。
                                          $('#list').html(` <ul> <li>first</li> <li>second</li> </ul> `.trim());
                                          Run code
                                          Cut to clipboard

                                            模板字符串中嵌入变量,需要将变量名写在${}之中。
                                            function authorize(user, action) { if (!user.hasPrivilege(action)) { throw new Error( // 传统写法为 // 'User ' // + user.name // + ' is not authorized to do ' // + action // + '.' `User ${user.name} is not authorized to do ${action}.`); } }
                                            Run code
                                            Cut to clipboard

                                              大括号内部可以放入任意的JavaScript表达式,可以进行运算,以及引用对象属性。
                                              var x = 1; var y = 2; `${x} + ${y} = ${x + y}` // "1 + 2 = 3" `${x} + ${y * 2} = ${x + y * 2}` // "1 + 4 = 5" var obj = {x: 1, y: 2}; `${obj.x + obj.y}` // 3
                                              Run code
                                              Cut to clipboard

                                                模板字符串之中还能调用函数。
                                                function fn() { return "Hello World"; } `foo ${fn()} bar` // foo Hello World bar
                                                Run code
                                                Cut to clipboard

                                                  如果大括号中的值不是字符串,将按照一般的规则转为字符串。比如,大括号中是一个对象,将默认调用对象的toString方法。

                                                  如果模板字符串中的变量没有声明,将报错。
                                                  // 变量place没有声明 var msg = `Hello, ${place}`; // 报错
                                                  Run code
                                                  Cut to clipboard

                                                    由于模板字符串的大括号内部,就是执行JavaScript代码,因此如果大括号内部是一个字符串,将会原样输出。
                                                    `Hello ${'World'}` // "Hello World"
                                                    Run code
                                                    Cut to clipboard

                                                      模板字符串甚至还能嵌套。
                                                      const tmpl = addrs => ` <table> ${addrs.map(addr => ` <tr><td>${addr.first}</td></tr> <tr><td>${addr.last}</td></tr> `).join('')} </table> `;
                                                      Run code
                                                      Cut to clipboard

                                                        上面代码中,模板字符串的变量之中,又嵌入了另一个模板字符串,使用方法如下。
                                                        const data = [ { first: '<Jane>', last: 'Bond' }, { first: 'Lars', last: '<Croft>' }, ]; console.log(tmpl(data)); // <table> // // <tr><td><Jane></td></tr> // <tr><td>Bond</td></tr> // // <tr><td>Lars</td></tr> // <tr><td><Croft></td></tr> // // </table>
                                                        Run code
                                                        Cut to clipboard

                                                          如果需要引用模板字符串本身,在需要时执行,可以像下面这样写。
                                                          // 写法一 let str = 'return ' + '`Hello ${name}!`'; let func = new Function('name', str); func('Jack') // "Hello Jack!" // 写法二 let str = '(name) => `Hello ${name}!`'; let func = eval.call(null, str); func('Jack') // "Hello Jack!"
                                                          Run code
                                                          Cut to clipboard


                                                            阮一峰的es6入门
                                                            mdn文档
                                                            You-Dont-Know-JS
                                                            #,广西南宁市,2017-07-14,14:36:39,@8,
                                                            #个人见解#
                                                            当使用的字段名、表名等与MySQL保留字冲突时(如创建名为desc的字段、往desc表中插入记录),如果不加反引号``,无法执行成功。
                                                            因此,INSERT `desc` VALUES('aa','bb');可以执行成功。而INSERT desc VALUES('aa','bb');执行失败。
                                                            而当你所使用的的字段名、表名不含有保留字时,可以不加反引号``
                                                            #,广西南宁市,2017-07-14,14:51:19,@8,
                                                            <input value="Test" type="button" onclick="alert(&#34;OK&#34;);" /> <input value="Test1" type="button" onclick="alert('OK1');" /> <input value="Test2" type="button" onclick='alert("OK2");' />
                                                            Run code
                                                            Cut to clipboard
                                                              #,广西南宁市,2017-07-14,14:52:37,@10,
                                                              Html转义字符
                                                              #,广西南宁市,2017-07-14,14:59:03,
                                                              二进制是Binary,简写为B
                                                              八进制是Octal,简写为O
                                                              十进制为Decimal,简写为D
                                                              十六进制为Hexadecimal,简写为H
                                                              #,广西南宁市,2017-07-14,14:59:38,@12,
                                                              在计算机语言中常用的进制有二进制、八进制、十进制和十六进制,十进制是最主要的表达形式。

                                                              对于进制,有两个基本的概念:基数和运算规则。
                                                              基数:基数是指一种进制中组成的基本数字,也就是不能再进行拆分的数字。二进制是0和1;八进制是0-7;十进制是0-9;十六进制是0-9+A-F(大小写均可)。也可以这样简单记忆,假设是n进制的话,基数就是【0,n-1】的数字,基数的个数和进制值相同,二进制有两个基数,十进制有十个基数,依次类推。
                                                              运算规则:运算规则就是进位或错位规则。例如对于二进制来说,该规则是“满二进一,借一当二”;对于十进制来说,该规则是“满十进一,借一当十”。其他进制也是这样。
                                                              #,广西南宁市,2017-07-14,15:05:51,@12,
                                                              js实现二进制与十进制的相互转换
                                                              <script> var a = 1010; alert(a.toString(2)); //转成二进制 alert(parseInt( "101110100 ",2)) ;//转成十进制 </script>
                                                              Run code
                                                              Cut to clipboard
                                                                #,广西南宁市,2017-07-14,15:09:12,@14,
                                                                var iNum = 10; alert(iNum.toString(2)); //输出 "1010" alert(iNum.toString(8)); //输出 "12" alert(iNum.toString(16)); //输出 "A"
                                                                Run code
                                                                Cut to clipboard
                                                                  注释:对数字调用 toString(10) 与调用 toString() 相同,它们返回的都是该数字的十进制形式。
                                                                  ECMAScript 类型转换
                                                                  #,广西南宁市,2017-07-14,15:23:39,@14, 十进制转二进制
                                                                  用2辗转相除至结果为1
                                                                  将余数和最后的1从下向上倒序写
                                                                  就是结果
                                                                  例如
                                                                  302 302/2 = 151 余0
                                                                  151/2 = 75 余1
                                                                  75/2 = 37 余1
                                                                  37/2 = 18 余1
                                                                  18/2 = 9 余0
                                                                  9/2 = 4 余1
                                                                  4/2 = 2 余0
                                                                  2/2 = 1 余0
                                                                  故二进制为100101110

                                                                  二进制转十进制
                                                                  从最后一位开始算
                                                                  依次列为第0、1、2...位
                                                                  第n位的数(0或1)乘以2的n次方
                                                                  得到的结果相加就是答案
                                                                  例如:01101011
                                                                  转十进制:
                                                                  第0位:1乘2的0次方=1 1乘2的1次方=2 0乘2的2次方=0 1乘2的3次方=8 0乘2的4次方=0 1乘2的5次方=32 1乘2的6次方=64 0乘2的7次方=0 然后:1+2+0 +8+0+32+64+0=107. 二进制01101011=十进制107.
                                                                  #,广西南宁市,2017-07-14,15:25:39,@10,
                                                                  <input value="Test" type="button" onclick="alert(&quot;OK&quot;);" />
                                                                  Run code
                                                                  Cut to clipboard
                                                                    错误
                                                                    #,广西南宁市,2017-07-14,15:26:49,@8, 反引号怎么打
                                                                    今天我发现我从来没打过这外符号
                                                                    ` 就是键盘的左上方, 1的左边不需要组合键
                                                                    Run code
                                                                    Cut to clipboard
                                                                      , 直接按下即可....
                                                                      刚开始我还一直在找没找到.....
                                                                      #,广西南宁市,2017-07-14,15:29:04,@17,
                                                                      浅析Js中的单引号与双引号问题 单引号和双引号其实没啥区别,看你自己习惯了 <input type="button" onclick="alert("1")">-------------------不正确 <input type="button" onclick="alert('1')">-------------------正确 双引号中再用双引号要这样: var str = "abc\"def\"ghi" 用反斜杠来禁止解析双引号。 下面是我摘录的,希望对你有用: 在一个网页中的按钮,写onclick事件的处理代码,不小心写成如下: <input value="Test" type="button" onclick="alert(""OK"");" /> IE提示出错后,再漫不经心地改为: <input value="Test" type="button" onclick="alert(\"OK\");" /> 结果还是出错。 这时,我就想不通了,虽然我知道最直接的解决方法是写成这样: <input value="" type="button" onclick="alert('OK');" /> 但为什么javascript中的转义字符\没有效果了呢? 后来找到一段正常的代码: <input value="Test" type="button" onclick="alert("OK");" /> 这时才理解,原来这时,还是归于HTML的管辖范围,所以转义字符应该使用HTML的,而不是javascript的。两个双引号的做法是vbScript的,\"这种做法则是javascript的,而HTML的,则是用"(转义字符),此外还可以使用:(转义字符)"、'。 下面列出各种表达方法: <html> <body> <input value="外双引号内双引号-错误" type="button" onclick="alert("OK");" /><br /> <input value="外单引号内单引号-错误" type="button" onclick='alert('OK');' /><br /> <input value="两个双引号-错误" type="button" onclick="alert(""OK"");" /><br /> <input value="两个单引号-错误" type="button" onclick="alert(''OK'');" /><br /> <input value="\+双引号-错误" type="button" onclick="alert(\"OK\");" /><br /> <input value="\+单引号-错误" type="button" onclick="alert(\'OK\');" /><br /> <input value="外双引号内单引号-OK" type="button" onclick="alert('OK');" /><br /> <input value="外单引号内双引号-OK" type="button" onclick='alert("OK");' /><br /> <input value="外部不使用引号-OK" type="button" onclick=alert('OK');alert("OK"); /><br /> <input value="HTML转义字符"(& # 3 4 ;)-OK" type="button" onclick="alert("OK");" /><br /> <input value="HTML转义字符'(& # 3 9 ;)-OK" type="button" onclick="alert('OK');" /><br /> <input value="HTML转义字符"(& # x 2 2 ;)-OK" type="button" onclick="alert('OK');" /><br /> <input value="HTML转义字符'(& # x 2 7 ;)-OK" type="button" onclick="alert('OK');" /><br /> <input value="HTML转义字符"(& q u o t ;)-OK" type="button" onclick="alert("OK");" /><br /> <input value="HTML转义字符'(& a p o s ;)-IE错误" type="button" onclick="alert('OK');" /><br /> <input value="其它\\-错误" type="button" onclick="alert(\\"OK\\");" /><br /> <input value="其它\& # 3 4 ;-错误" type="button" onclick="alert(\"OK\");" /><br /> </body> </html>
                                                                      Run code
                                                                      Cut to clipboard
                                                                        #,广西南宁市,2017-07-14,15:41:45,@16,
                                                                        比如2进制数 101.101 转化为十进制 1 0 1 . 1 0 1 按次序来每个括号代表一个数 (2的2次方)+0+(2的0次方)+(2的-1次方)+0+(2的-2次方) 意思就是小数点 后面 按 -1 -2 -3 的次序来开方 2的-2次方等于2的2次方分之一.一个数的负的X次方等于这个数的X次方分之一.
                                                                        Run code
                                                                        Cut to clipboard
                                                                          #,广西南宁市,2017-07-14,15:44:58,
                                                                          前端双引号单引号,正则反向引用,js比较jq 1.js,jq,css,html属性必须双,如果同时出现需要嵌套使用,属性的规范是双但是也可以用单测试有效 单引号现象举例: jq中获取元素标签是单引号:$('input').click;弹出也是单引号: alert('aaaa');jq根据id获取元素和设置css都一般用单引号:$('#box').css('color', 'red'); 上述两种情况全部换成双引号也是行的! 2.分号的用法: {}作为函数体一般是不需要分号结束的,()一般需要分号结束,除非作为一个函数的参数就不需要分号; 3.js和jq的比较: jquuery是获取的时候是根据css获取元素一样的用.# 而原生的Js却是document.getElementById('box') 没有那些特殊符号,可以看出jq是为了兼容css的特点,更加接近于面向对象的编程传递参数以字面值对象的 形式进行传递参数,也就是js中的字母表示的内容getElementById是用.#这些符号代替了 4.jq的难点 #box + p { color:green; }当前元素的下一个兄弟节点元素; #box ~ p { color:red; } 当前元素的后面所有兄弟节点元素; 5.正则的反向引用: 正则表达式在函数中用的时候最好是单引号:$reg3='/(\d)\1{2}-(\d)\2{2}-(\d)\3{2}/i';其中\1表示反向引用; preg_match($reg3,$str3,$res);
                                                                          Run code
                                                                          Cut to clipboard
                                                                            文章:书写更漂亮规范的js代码  发表时间:2017-07-13, 15:11:33  
                                                                            展开↯

                                                                            #1181

                                                                            作者:广西南宁市
                                                                            紧挨着两家服装企业,用一大块布料的西装50元愁卖,一小块材料的内衣1000元抢着买,同一个行业,同一个地区,冰火两重天。

                                                                            这就是一个时代的真实写照,也是我经常会说的一句话:“只有产业的新陈代谢,没有帝国的夕阳。”
                                                                            #1631,悔创阿里杰克马
                                                                            #,广西南宁市,2017-05-17,15:02:10, “问题不是谁会允准我,而是谁会阻止我。”

                                                                            ——艾茵·兰德
                                                                            #,广西南宁市,2017-05-17,15:05:48, 但乌布雷和丝绸之路的致命缺陷还不止于此。或者干脆说,他们是成于技术、毁于技术。当初为了加强丝绸之路的安全,乌布雷雇佣了许多黑客,但即便如此,惯于寻踪觅迹的特工们最后还是捕捉到了初期编码的一个错误,并据此搜出了一个咖啡馆的 IP 地址。而乌布雷正是那里的常客。拿到这一线索后,FBI、IRS、DHS 以及 DOJ 等多个组织纷纷开始顺藤摸瓜;所有的证据汇总起来后,都指向了同一个目标: 2013 年 10 月某天下午的某图书馆里,那个抱着手提闷头打字、浓眉乌眼的年轻人——乌布雷。

                                                                            被摁倒时,这个亿万富翁口袋里只装了两美元。
                                                                            #,广西南宁市,2017-05-17,15:06:03, 还是那句话:乌布雷从没想过丝绸之路会滋生出如此罪过。我采访过几十个熟悉他的人,他们都告诉我说乌布雷为人善良、富于同情。他会协助老太太过马路,会用贴心的礼物给人惊喜,会在邮件中以“Fudge”代替“Fuck”——甚至在丝绸之路开张后也是如此。但后来,他还是变了。是非之间的那条分界线一天模糊一点,一天模糊一点,直至最后,两者完全混淆,而乌布雷也终于变成了 DPR。
                                                                            #,广西南宁市,2017-05-17,15:07:27,
                                                                            从乌布雷到 DPR,谁也不知道变化是从哪天开始的

                                                                            只有一件事是再清晰不过的,那就是:眼看着自己的创造被用于罪恶,乌布雷却无能为力,直至最后他自己也成了手持屠刀的人。

                                                                            为明天搭建技术的当代人很少去想他人会如何用自己的心血去为非作歹。但我们是真的已经到了一个转折点。特朗普时代已经到来,硅谷的重任再也不是“快速前进,打破陈规”了,而是该想想如何防范可怕的科技滥用。

                                                                            可悲的是,乌布雷本人没有早点学到这一课。而因为已被判处终身监禁,所以,他只能永远缺课了。
                                                                            #,广西南宁市,2017-05-17,15:09:38, 现在一些大佬都在研究人工智能,未来一旦控制不了或者有漏洞被恐怖分子利用或者自我进化那将是人类的末日,细思级恐。当它设定为生存时,不择手段防卫,杀掉要摧毁它的人,易如反掌。仇恨机制也是可以学习到的。
                                                                            #,广西南宁市,2017-05-17,15:11:12, 没法儿说。武器既可以用来防身,也能用来杀人。到底是武器的问题,还是人的问题?!
                                                                            #,广西南宁市,2017-05-19,11:27:13, 跟一个中风说话结巴的患者说,你需要释放气场、学会用眼神交流,这样才会更自信,自信了就不会口吃了... 请先把中风根治吧!
                                                                            #,广西,2017-05-19,12:24:52, 本该玩的年龄,却怎么心事重重,本该放纵的青春,却怎么只能听天由命。
                                                                            #,北京市,2017-05-21,17:46:31, 最近几年以来,我拥有着一个非常健康的生活方式,不抽烟,不喝酒,不泡吧,不搭讪陌生女孩,并且每天都是早上六点起床,十点就寝,每天坚持锻炼身体,可是,就在前段时间,我的生活完全被打乱了,因为,,,,,,,,我出狱了
                                                                            #,广西南宁市,2017-05-26,11:12:14,@9, 现在的地方网站,更像是一个活动公司,而不是互联网公司。
                                                                            #,广西南宁市,2017-05-26,11:31:30,@10, 地方小站正如路边摊,终成不了气候,因为一直纠结于吃不饱的问题。
                                                                            #,广西南宁市,2017-05-26,11:39:27, 如果努力本身不能使你快乐,漫漫前路,便只剩压力和痛苦,每天调节自己的负能量都来不及,谈何出类拔萃?任何行业,努力至多帮你存活,不会帮你出类拔萃,只有发自内心的爱会。
                                                                            #,广西南宁市,2017-05-26,11:47:54, 当你是个乞丐的时代,千万不要吹牛,假装自己是皇上,给爷来个御厨,因为它会给你在心里构建一个虚幻而美好的未来。
                                                                            #,广西南宁市,2017-05-26,11:48:15, 靠打鸡血、跳励志操、给员工洗脑、给客户送钱,拉着代理商加盟商吃吃喝喝,这些老办法是没啥希望了。
                                                                            #,广西南宁市,2017-05-26,11:56:41, 如果说爱国主义是恶棍最后的避难所,那么坚守实业就是烂企业最后的护身符。
                                                                            #,广西南宁市,2017-05-26,14:16:40,@15, 当员工有了主人翁意识的时候,每一项改进他都愿意贡献智慧。
                                                                            #,广西南宁市,2017-05-26,14:21:19,@16, 转型的关键在于价值创新,为整个产业链赋予新的价值,没有了价值创新,“转型”只能沦为“转行”。
                                                                            #,广西南宁市,2017-05-26,14:22:10, 而这些模式说到底就一句话“找个新渠道卖货”。
                                                                            #,广西南宁市,2017-05-26,14:22:22,@18, 线下代理商不行了改电商,电商不行了换微商,再不行就做直播,做社群营销,做IP营销,C2C、C2B、C2M、O2O、OAO……动不动设个小目标,砸几个亿建个平台,最后发现,无论建了多少个平台,用了多少种模式,自己的品牌、自己的产品还是不值钱。
                                                                            #,广西南宁市,2017-05-26,14:27:23, 客观地讲,牛人大神们可能是有不少大忽悠的,但为什么偏偏都被你遇见了呢?当你迷信这些牛人大神能解决你所有问题的时候,这种结局就已经注定了。
                                                                            #,广西南宁市,2017-05-26,14:34:06, 你今天做企业面对的困难,从来不是因为缺少牛人,不是因为你的人不行了,而是因为人的协作方式不行了,也就是你的内部组织架构和沟通机制出了问题。当你的体制不行的时候,用一群牛人,还不如用一群怂人,至少他们不打架。
                                                                            #,广西南宁市,2017-05-26,14:37:42, 在我们很多传统制造企业里,老板、领导都是全能选手,无所不能。公司内大大小小的会议都可以成为老板个人成功经验的交流会,成为他传授成功致富秘笈的函授班,你还不敢提不同意见,要么说你不切实际,要么说你不服管,再给你穿点小鞋,保证你混不下去。这就是我们制造业企业家们对自己过往成功经验深度迷信的结果。

                                                                            不可否认,传统企业家很多都是筚路蓝缕的发展,依靠个人的聪明才智、人脉关系逐渐壮大起来的。但悲剧就在于,这种成功对于企业家自身的束缚,已经成为了企业转型升级最大的障碍。他们相信“道”,相信万变不离其宗,以为自己三十几年前的成功经验可以指导如今新时代下的一切工作,所以,就导致他们既看不到变化,也不愿意变化。

                                                                            更可怕的是,这种成功的老板,会在企业内部培养出一个依赖于这种成功的生态系统,也就是跟着老板一起筚路蓝缕开创成功的元老团队,他们是这种成功的既得利益者。所以任何人都不能质疑这种成功经验,改变就意味着威胁他们的地位,这股强大的保守力量,足以扼杀任何外来的新鲜血液。

                                                                            这个时候,就算老板们痛下决心想要变革,也只能有两种选择,要么内部进行大清洗,清除元老,落下个无情无义的骂名。要么内部进行妥协,在新晋者和元老中间和稀泥,这能解决眼前的问题,但长远看必将引发更大的冲突。所以,对于这些带着成功光环的制造业老板们而言,这就是一种骑虎难下、进退失据的局势。

                                                                            所以,对于传统制造业企业家,尤其是曾经很成功的企业家,转型升级的第一步,就是要学会破除自己的权威,摘掉自己的光环,这个过程很痛苦很艰难,但是必须去做。因为只有突破过往成功的束缚,我们才能迎来更大的成功。
                                                                            #,广西南宁市,2017-05-26,14:46:36, 他们是通过一次次美好而成功的战术,让自己最终陷入了战略困境之网,现在是越挣扎,网子勒得越紧。
                                                                            #,广西南宁市,2017-07-14,00:08:35, 黑夜行号背景黑色
                                                                            #,广西南宁市,2017-07-14,10:23:58,@24, 楼中楼再回复的时候不跳转
                                                                            文章:@意见反馈/技术支持/伊网/安企网  发表时间:2017-05-26, 14:39:35  
                                                                            展开↯

                                                                            #1182

                                                                            作者:广西南宁市
                                                                            使用clipboard.js实现页面内容复制到剪贴板
                                                                            clipboard.js
                                                                            文章:20 行 JS 代码,实现复制到剪贴板功能  发表时间:2017-07-13, 17:36:25  
                                                                            展开↯

                                                                            #1183

                                                                            作者:广西南宁市
                                                                            js中函数表达式、函数声明和立即执行函数归纳

                                                                            函数声明、函数表达式、匿名函数

                                                                            函数声明:function fnName () {…};使用function关键字声明一个函数,再指定一个函数名,叫函数声明。

                                                                            函数表达式 var fnName = function () {…};使用function关键字声明一个函数,但未给函数命名,最后将匿名函数赋予一个变量,叫函数表达式,这是最常见的函数表达式语法形式。

                                                                            匿名函数:function () {}; 使用function关键字声明一个函数,但未给函数命名,所以叫匿名函数,匿名函数属于函数表达式,匿名函数有很多作用,赋予一个变量则创建函数,赋予一个事件则成为事件处理程序或创建闭包等等。

                                                                            函数声明和函数表达式不同之处在于,一、JavaScript引擎在解析javascript代码时会‘函数声明提升’(Function declaration Hoisting)当前执行环境(作用域)上的函数声明,而函数表达式必须等到Javascirtp引擎执行到它所在行时,才会从上而下一行一行地解析函数表达式,二、函数表达式后面可以加括号立即调用该函数,函数声明不可以,只能以fnName()形式调用 。以下是两者差别的两个例子。
                                                                            fnName(); function fnName(){ ... }//正常,因为‘提升’了函数声明,函数调用可在函数声明之前 fnName(); var fnName=function(){ ... }//报错,变量fnName还未保存对函数的引用,函数调用必须在函数表达式之后 var fnName=function(){ alert('Hello World'); }();//函数表达式后面加括号,当javascript引擎解析到此处时能立即调用函数 function fnName(){ alert('Hello World'); }();//不会报错,但是javascript引擎只解析函数声明,忽略后面的括号,函数声明不会被调用 function(){ console.log('Hello World'); }();//语法错误,虽然匿名函数属于函数表达式,但是未进行赋值操作, //所以javascript引擎将开头的function关键字当做函数声明,报错:要求需要一个函数名
                                                                            Run code
                                                                            Cut to clipboard

                                                                              在理解了一些函数基本概念后,回头看看( function(){…} )()和( function (){…} () )这两种立即执行函数的写法,最初我以为是一个括号包裹匿名函数,并后面加个括号立即调用函数,当时不知道为什么要加括号,后来明白,要在函数体后面加括号就能立即调用,则这个函数必须是函数表达式,不能是函数声明。
                                                                              (function(a){ console.log(a); //firebug输出123,使用()运算符 })(123); (function(a){ console.log(a); //firebug输出1234,使用()运算符 }(1234)); !function(a){ console.log(a); //firebug输出12345,使用!运算符 }(12345); +function(a){ console.log(a); //firebug输出123456,使用+运算符 }(123456); -function(a){ console.log(a); //firebug输出1234567,使用-运算符 }(1234567); var fn=function(a){ console.log(a); //firebug输出12345678,使用=运算符 }(12345678)
                                                                              Run code
                                                                              Cut to clipboard

                                                                                可以看到输出结果,在function前面加!、+、 -甚至是逗号等到都可以起到函数定义后立即执行的效果,而()、!、+、-、=等运算符,都将函数声明转换成函数表达式,消除了javascript引擎识别函数表达式和函数声明的歧义,告诉javascript引擎这是一个函数表达式,不是函数声明,可以在后面加括号,并立即执行函数的代码。

                                                                                加括号是最安全的做法,因为!、+、-等运算符还会和函数的返回值进行运算,有时造成不必要的麻烦。

                                                                                不过这样的写法有什么用呢?

                                                                                javascript中没用私有作用域的概念,如果在多人开发的项目上,你在全局或局部作用域中声明了一些变量,可能会被其他人不小心用同名的变量给覆盖掉,根据javascript函数作用域链的特性,可以使用这种技术可以模仿一个私有作用域,用匿名函数作为一个“容器”,“容器”内部可以访问外部的变量,而外部环境不能访问“容器”内部的变量,所以( function(){…} )()内部定义的变量不会和外部的变量发生冲突,俗称“匿名包裹器”或“命名空间”。

                                                                                jQuery使用的就是这种方法,将jquery代码包裹在( function (window,undefined){…jquery代码…} (window)中,在全局作用域中调用JQuery代码时,可以达到保护JQuery内部变量的作用。
                                                                                文章:书写更漂亮规范的js代码  发表时间:2017-07-13, 15:27:59  
                                                                                展开↯

                                                                                #1184

                                                                                作者:广西南宁市
                                                                                js取整数四舍五入
                                                                                1.丢弃小数部分,保留整数部分 parseInt(5/2) 2.向上取整,有小数就整数部分加1 Math.ceil(5/2) 3,四舍五入. Math.round(5/2) 4,向下取整 Math.floor(5/2) Math 对象的方法 FF: Firefox, N: Netscape, IE: Internet Explorer 方法 描述 FF N IE abs(x) 返回数的绝对值 1 2 3 acos(x) 返回数的反余弦值 1 2 3 asin(x) 返回数的反正弦值 1 2 3 atan(x) 以介于 -PI/2 与 PI/2 弧度之间的数值来返回 x 的反正切值 1 2 3 atan2(y,x) 返回从 x 轴到点 (x,y) 的角度(介于 -PI/2 与 PI/2 弧度之间) 1 2 3 ceil(x) 对一个数进行上舍入。 1 2 3 cos(x) 返回数的余弦 1 2 3 exp(x) 返回 e 的指数。 1 2 3 floor(x) 对一个数进行下舍入。 1 2 3 log(x) 返回数的自然对数(底为e) 1 2 3 max(x,y) 返回 x 和 y 中的最高值 1 2 3 min(x,y) 返回 x 和 y 中的最低值 1 2 3 pow(x,y) 返回 x 的 y 次幂 1 2 3 random() 返回 0 ~ 1 之间的随机数 1 2 3 round(x) 把一个数四舍五入为最接近的整数 1 2 3 sin(x) 返回数的正弦 1 2 3 sqrt(x) 返回数的平方根 1 2 3 tan(x) 返回一个角的正切 1 2 3 toSource() 代表对象的源代码 1 4 - valueOf() 返回一个 Math 对象的原始值
                                                                                Run code
                                                                                Cut to clipboard
                                                                                  文章:JS浮点数运算多出很多位小数点Bug的解决办法  发表时间:2017-07-13, 14:38:20  
                                                                                  展开↯

                                                                                  #1185

                                                                                  作者:广西南宁市
                                                                                  js中三种作用域详解(全局,函数,块级)
                                                                                  1.全局变量:声明在函数外部的变量(所有没有var直接赋值的变量都属于全局变量)
                                                                                  2.局部变量:声明在函数内部的变量(所有没有var直接赋值的变量都属于全局变量)

                                                                                  JS中变量申明分显式申明和隐式申明。
                                                                                  var i=100;//显式申明 i=100;//隐式申明
                                                                                  Run code
                                                                                  Cut to clipboard


                                                                                      在函数中使用var关键字进行显式申明的变量是做为局部变量,而没有用var关键字,使用直接赋值方式声明的是全局变量。  
                                                                                      当我们使用访问一个没有声明的变量时,JS会报错。而当我们给一个没有声明的变量赋值时,JS不会报错,相反它会认为我们是要隐式申明一个全局变量,这一点一定要注意。

                                                                                    全局作用域针对于全局变量来说;
                                                                                    <script> alert(c);//输出undefind // alert(d);报错错 var c=3; function test(){ var a=1; b=2; alert(c)//输出三 } alert(c);//输出3 test(); </script>
                                                                                    Run code
                                                                                    Cut to clipboard


                                                                                      全局变量在整个上下文都有效只是在没有赋值之前调用,会输出undefin

                                                                                      函数作用域是针对局部变量来说的,在函数中定义的变量在函数外不能获取
                                                                                      <script>function test(){ alert(a);//声明未赋值输出undefine var a=1; alert(a);//1 } // alert(a);报错,外部获取不到 test(); //alert(a);保存不能输出 </script>
                                                                                      Run code
                                                                                      Cut to clipboard


                                                                                        块级作用域
                                                                                        概念“{}”中间的部分都是块级作用域ex:for while if ,js中没有块级作用域,但是可以用闭包实现类似功能。
                                                                                        <script> var i=1; if(i==1){ var b=2; } alert(b);//输出2 for(var j=0;j<=2;j++){ var c=3; } alert(c);//输出3 </script>
                                                                                        Run code
                                                                                        Cut to clipboard
                                                                                          #,广西南宁市,2017-07-13,10:25:04, 在C/C++中,由花括号封闭的代码块都有自己的作用域,也就是块级作用域(私有作用域)。而在javascript中则没有块级作用域,首先来看一段代码:
                                                                                          function test(){ for(var i = 1 ; i <=5; i++){ //i alert(i); } //alert(i); //6 } */ //test();
                                                                                          Run code
                                                                                          Cut to clipboard

                                                                                            对于有块级作用域的语言来说,for语句中定义并初始化的变量i在循环外是无法访问的,而在javascript中,for语句中定义的变量i在循环结束后,依旧会存在于循环外部的执行环境(作用域)中,在这里i的作用域是全局环境。具体来说就是:使用var关键字声明变量时,这个变量会自动添加到距离最近的可用环境中。对于函数而言,这个最近的环境就是函数的局部环境。如果变量在未经声明的情况下被初始化,则该变量会被自动添加到全局环境

                                                                                            不过有时候的确很需要块级作用域来解决一些问题,这时候我们就可以使用匿名函数来模仿块级作用域

                                                                                            匿名函数就是没有名字的函数,有时候也被称为拉姆达(lamda)函数。形式如下:
                                                                                            function functionName(arg0,arg1){ //函数体 }
                                                                                            Run code
                                                                                            Cut to clipboard

                                                                                              而用作模仿块级作用域(私有作用域)的匿名函数的语法形式如下:
                                                                                              (function(){ //块级作用域 })();
                                                                                              Run code
                                                                                              Cut to clipboard

                                                                                                以上代码的意思是:首先定义并立即调用一个匿名函数。将函数声明包含在圆括号中,表示它实际上是一个函数表达式。而紧随其后的另一对圆括号表示立即调用这个函数。

                                                                                                可能刚开始我们感觉这种语法比较难以理解,我们可以先看下下面这段代码:
                                                                                                var myFunc=function(){ alert(‘函数’); }; myFunc();
                                                                                                Run code
                                                                                                Cut to clipboard

                                                                                                  上面的代码中,首先以函数表达式的方式定义了一个函数,然后立即调用它。在这里定义函数的方式就是先创建一个匿名函数,然后将其赋值给变量myFunc,而在函数名称后加一对圆括号即表示调用函数。那我们如果直接用匿名函数代表变量myFunc,在匿名函数后面添加一对圆括号不就表示直接调用了吗?然而,如果如下这样做就会报错:
                                                                                                  function(){ //块级作用域 }();
                                                                                                  Run code
                                                                                                  Cut to clipboard

                                                                                                    因为在javascript中,function关键字表示一个函数声明的开始,而函数声明后面不能直接跟圆括号。而函数表达式后面可以跟圆括号,来表示函数调用。在函数声明外面加一对圆括号就可以转换成函数表达式,如下:
                                                                                                    (function(){ //块级作用域 })();
                                                                                                    Run code
                                                                                                    Cut to clipboard

                                                                                                      这样最简单的块级作用域就创建好了。这种技术长在全局作用域中用在函数外部,来限制向全局作用域中添加过多的变量和函数。例如:
                                                                                                      (function(){ var now=new Date(); if(now.getMonth()==0&&now.getDate()==1){ alert(“Happy new year”); } })();
                                                                                                      Run code
                                                                                                      Cut to clipboard

                                                                                                        以上代码放在全局作用域中,用来确定在1月1日显示一条祝贺新年的信息。其中变量now现在就是匿名函数模仿的块级作用域中的局部变量。

                                                                                                        当然,只要我们临时需要一些变量,都可以使用块级作用域(私有作用域)。当匿名函数执行完毕,其作用域链立即销毁,从而可以减少闭包占用资源问题。
                                                                                                        // js : () 表示执行 /* function test(){ (function(){ for(var i = 1 ; i <=5; i++){ //i alert(i); } })(); alert(i); } test(); */ //(function(){alert('我直接执行了!');})();
                                                                                                        Run code
                                                                                                        Cut to clipboard
                                                                                                          文章:书写更漂亮规范的js代码  发表时间:2017-07-13, 10:18:20  
                                                                                                          展开↯

                                                                                                          #1186

                                                                                                          作者:广西南宁市
                                                                                                          文章:书写更漂亮规范的js代码  发表时间:2017-07-13, 10:04:14  
                                                                                                          展开↯

                                                                                                          #1187

                                                                                                          作者:广西南宁市
                                                                                                          PHP输出中文乱码的问题
                                                                                                          用echo输出的中文显示成乱码,
                                                                                                          其实应该是各种服务器脚本都会遇到这个问题,
                                                                                                          根本还是编码问题,
                                                                                                          一般来说出于编码兼容考虑大多的页面都将页面字符集定义为utf-8
                                                                                                          <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
                                                                                                          这时候要正常显示中文需要转化一下编码方式,比如
                                                                                                          echo iconv("GB2312","UTF-8",'中文');就不会乱码了
                                                                                                          还有其他方法,比如
                                                                                                          在php的echo前面加入header("Content-Type:text/html;charset=gb2312");
                                                                                                          当然简体中文页面也可以干脆地,
                                                                                                          把<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />中的UTF-8改成gb2312

                                                                                                          实际中遇见奇怪的现象,
                                                                                                          在本机服务器上正常显示的页面,传上服务器就echo出来乱码,
                                                                                                          没仔细琢磨过这个缘由,因为通过iconv函数GB2312、UTF-8换换位置重新编码下就正常了,
                                                                                                          不过估计肯定是APACHE,更确切说是PHP服务端的设置不同造成的,
                                                                                                          看看PHP.INI应该就能解决。
                                                                                                          #,广西南宁市,2017-07-12,15:56:20,
                                                                                                          在php的echo前面加入
                                                                                                          header("Content-Type:text/html;charset=UTF-8");
                                                                                                          Run code
                                                                                                          Cut to clipboard
                                                                                                            #,广西南宁市,2017-07-12,15:57:11, js字符串转换成数字的三种方法
                                                                                                            #,广西南宁市,2017-07-12,15:59:06,
                                                                                                            H5的storage(sessionstorage&localStorage)简单存储删除
                                                                                                            众所周知,H5的storage有sessionstorage&localStorage,其中他们的共同特点是API相同
                                                                                                            下面直接上代码,storage中的存储与删除:
                                                                                                            存值取值删除
                                                                                                            <!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>H5的storage</title> </head> <body> <input type='button' onclick='setItems()' value='存值' /> <input type='button' onclick='getItems()' value='取值' /> <input type='button' onclick='deleteItem()' value='删除' /> </body> <script src="js/jquery.min.js"></script> <script> //localStorage存值永久有效 function setItems(){ var user = {}; user.name = 'Adam Li'; user.age = 25; user.home = 'China'; localStorage.setItem('userinfo',JSON.stringify(user)); } //localStorage取值 function getItems(){ var data = JSON.parse(localStorage.getItem('userinfo')); console.log("name:"+data.name+'\r age:'+data.age+"\r home:"+data.home); } //localStorage删除指定键对应的值 function deleteItem(){ localStorage.removeItem('userinfo'); console.log(localStorage.getItem('userinfo')); } </script> </html>
                                                                                                            Run code
                                                                                                            Cut to clipboard
                                                                                                              文章:微信摇一摇统计次数微官网  发表时间:2017-07-12, 15:55:49  
                                                                                                              展开↯

                                                                                                              #1188

                                                                                                              作者:广西南宁市
                                                                                                              川普推特治国,我们现在微博治国,反正发错了就删
                                                                                                              #1890,我们先别谈更高级的道德,首先学会尽量不给别人添麻烦
                                                                                                              #,广西南宁市,2017-07-12,09:59:49, 分不清轻重,内心极度幼稚,觉得做错了只要道歉就可以了事。
                                                                                                              #,广西南宁市,2017-07-12,10:09:21, “医生,快,病人有反应了!”
                                                                                                              医生长出一口气:“这位患者那天工资被新人超过,一着急脑溢血晕过去了,看来总算在梦里想通了啊”
                                                                                                              #,广西南宁市,2017-07-12,10:17:35, 银角大王将宝葫芦倒置,喊了一声:“周鸿祎!”周鸿祎应了一声,嗖的便被吸了进去。银角大王查看时,里面除了周鸿祎,还有360杀毒、360压缩、360浏览器、360安全卫士、360游戏大厅等熙熙攘攘一干人。银角大王惊讶道:“怎的来了这么多?”宝葫开口言道:“我就只点了个‘下一步’。” 危险!您的宝葫芦有53个漏洞。金角大王正要说话,看到一旁的李彦宏在笑,大怒,反转宝葫芦正要喊,李彦宏嗖的一声钻进了宝葫芦,金角大王转过葫芦一看,里面除了李彦宏,还有百度贴吧、百度手机管家、百度浏览器、百度杀毒、百度输入法、百度外卖、百度安全中心、百度云、百度音乐、百度知道、百度百科……密密麻麻一干人,金角大王问怎么回事,宝葫芦开口道:“我什么都没干!” 然后突然见马化腾拿了一个一模一样的葫芦站在金角大王家门口。
                                                                                                              #,广西南宁市,2017-07-12,10:17:53,@3, 马云现在路边吆喝:金角大王同款,真实可吸,包邮试用只要9.9元!
                                                                                                              #,广西南宁市,2017-07-12,10:18:14,@3, 看到谷歌现在门口,反转宝葫芦喊了半天,谷歌硬是听不到。。
                                                                                                              #,广西南宁市,2017-07-12,10:18:26,@3, 对比了一下,淫叫大王觉得还是周鸿祎比较有节操。
                                                                                                              #,广西南宁市,2017-07-12,10:18:39,@5, 因为有堵墙Ծ‸Ծ
                                                                                                              #,广西南宁市,2017-07-12,10:19:07,@6, 然后忽见一人携不明物体飞来,曰:俺老罗要造东天庭最好的葫芦!把山寨品给砸了。
                                                                                                              #,广西南宁市,2017-07-12,10:20:23,@4, 马化腾说:你的葫芦是假的,我的才是真的!
                                                                                                              #,广西南宁市,2017-07-12,10:21:04, 银角大王喊一声:马化腾,马化腾应了一声,然后进去了,还带进腾讯全家桶,周鸿祎就给挤出来了,再喊一声周鸿祎,周鸿祎就进去了,马化腾又被挤出来了,银角大王惊道:恩师传授宝贝之时,说过此物可容宇宙万物,没想到放个马化腾或者周鸿祎就满了,金角道,贤弟莫慌,此二人定是五行相冲,所以不能同时在一个葫芦内,等我把李彦宏放出,你再把李彦宏吸进瓶,必定可行,况且那李彦宏自带几百莆田医院,包治百病,说不定还可治好此二人的五行相冲症状.
                                                                                                              #,广西南宁市,2017-07-12,10:21:17, 周鸿祎还挺有良心,下一步!
                                                                                                              #,广西南宁市,2017-07-12,10:22:08, 能聊天的病毒,会杀毒的木马
                                                                                                              #,广西南宁市,2017-07-12,10:22:29, 然后葫芦就卡死再也用不了了
                                                                                                              #,广西南宁市,2017-07-12,10:25:21, 再三确认了一下,李彦宏的“密密麻麻”后面是一干人,而不是一千人。
                                                                                                              #,广西南宁市,2017-07-12,10:25:51, 华为推出原谅绿葫芦,雷军表示我们的葫芦跑分宇宙第一!
                                                                                                              #,广西南宁市,2017-07-12,10:26:11,@11, 杀完毒发现多了一个猎豹浏览器。。
                                                                                                              #,广西南宁市,2017-07-12,10:54:13, 高铁上,一位中国大妈坐在一位外国小伙旁边。漫长的旅途百无聊赖,大妈正好也懂几句英文,于是就问外国小伙:“Do you know An Li?”正好小伙中文说的很好,听到这个问题马上激动地说:“知道知道,我是他的超级粉丝,他的电影我全都看过!”于是大妈跟小伙相谈甚欢,从“卧虎藏龙”到“断背山”,从“少年Pi的奇幻漂流”到“比利林恩的中场战事”,一直聊到小伙到站下车。哦,对了,小伙下车前还从大妈这里买走了一千多块的安利产品。
                                                                                                              #,广西南宁市,2017-07-12,11:20:37, 以大多数人的努力程度之低,根本轮不到拼天赋。
                                                                                                              #,广西南宁市,2017-07-12,11:37:25, 华盛顿和乾隆同一年死去,这就是美国的发达之处了,对比华盛顿所留下的伟大遗产,乾隆毕生的工作不过是在对一所即将沉没的巨轮进行修补,然而他挽回不了船本身的巨大漏洞。他们死后,两个国家走上截然不同的道路。
                                                                                                              #,广西南宁市,2017-07-12,11:37:41,@19, 没有法国拼了老命援助,独立战争谁赢真不一定呢。
                                                                                                              法国七年战争惨败。独立战争拼命援助美国怼英国,最后打赢了,却没占到什么实际便宜,最后国内怨声载道,还爆发了法国大革命。也算是华盛顿的贡献了。
                                                                                                              #,广西南宁市,2017-07-12,11:37:55,@19, 华盛顿一辈子就没打赢过几场胜仗,还把法国老大哥坑死了,独立宣言一开始没人想那么伟光正,正如上面说的,女人,黑人,黄种人,穷人都不是人,后面美国变得越来越自由,平等,不是华盛顿一个人的功劳,最主要的还是和后来的国际共产主义运动,民族独立浪潮等共同逐渐推动的
                                                                                                              #,广西南宁市,2017-07-12,11:38:11,@19, 然而美帝1865年林肯赢了内战后才废除奴隶制
                                                                                                              #,广西南宁市,2017-07-12,11:38:44,@19, 啧啧,搞不好几百年后就是“XXX和川普同一年死去,这就是中国的发达之处了,对比XXX所留下的伟大遗产,川普毕生的工作不过是在对一所即将沉没的巨轮进行修补,然而他挽回不了船本身的巨大漏洞。他们死后,两个国家走上截然不同的道路。”
                                                                                                              #,广西南宁市,2017-07-12,11:40:02,@21, 大概华盛顿一定肯定以及及其确定的忘掉了Negro
                                                                                                              #,广西南宁市,2017-07-12,11:40:54, 你大清国也不是你这四等贱汉的大清国,是满大人的大清国
                                                                                                              #,广西南宁市,2017-07-12,11:41:32, 美国起码打赢英国从英国殖民地变为独立国家,大清打英国从独立国家变成半殖民地。
                                                                                                              文章:他不是脾气暴躁,只是不能被打扰  发表时间:2017-07-12, 10:00:02  
                                                                                                              展开↯

                                                                                                              #1189

                                                                                                              作者:广西南宁市
                                                                                                              这篇回答叫做:“为什么有时候下载东西一开始很快,后来就越来越慢”回答暨通信网理论基础课程复习笔记

                                                                                                              不是套路!!!是TCP协议的拥塞控制机制导致的!
                                                                                                              要理解TCP的拥塞控制机制,还得从古老的七层模型说起……

                                                                                                              其中TCP协议应用于传输层,下载就是传输的一种,而TCP传输的速度基本是这样的

                                                                                                              其中横坐标是传输次数,纵坐标是“拥塞窗口”数,就是要传输的报文需要先进入这个窗口才能发出去,简单的理解成传输速度就可以了a
                                                                                                              假设我要在百度云上下载一个文件,以之为例解释一下这个过程。

                                                                                                              (A→B段)
                                                                                                              百度云:不知道当前网络环境怎么样,路上堵不堵……不管了发一个报文试试。
                                                                                                              我:收到啦收到啦!
                                                                                                              百度云:诶呦不错那再发两个试试~
                                                                                                              ……
                                                                                                              百度云:行了行了差不多了可以慢点儿增加了
                                                                                                              这一段,起点学名叫做慢开始,后面叫指数增大

                                                                                                              (B→C段)
                                                                                                              百度云:加一个
                                                                                                              我:收到啦
                                                                                                              百度云:再加一个
                                                                                                              我:收到啦
                                                                                                              百度云:再加一个
                                                                                                              我:……
                                                                                                              百度云:? 诶好像堵了= =
                                                                                                              这一段,学名叫做,拥塞避免算法,即,加法增大

                                                                                                              (C→D段)
                                                                                                              百度云:算了从头开始
                                                                                                              这一段叫做,乘法减小,开始新的慢开始,指数增大,但是,只增大到刚刚的一半,就进入拥塞避免阶段啦!(D→E段,E纵坐标是C的一半)
                                                                                                              以上是TCP Tahoe版本的传输过程(也是主要考试的内容),然而实际上这个版本太基础了,已经废弃不用了,实际使用的是红线的版本,叫做TCP Reno(但是这个不考)

                                                                                                              红色版本与蓝色版本的区别就是,红色版本的乘法减小并不是直接减到1然后重新慢开始,而是采用了效率高一些的“快恢复快重传”算法,也就是乘法减小至原来的一半(C→F段,F是C的一半)然后直接开始加法增大。这样可以看到比原来的蓝色版本稍微快了一点。
                                                                                                              但下载还是很慢啊怎么办,关于这点老师的说法是,自己手动暂停一下,再重新开始下载,就又能享受一次第一次的指数增加加法增加的速度,不然后面一直减半减半减半就会越来越慢越慢越慢………………

                                                                                                              以上都是与TCP协议有关的理论因素,其他因素还包括加速器啊下载器啊什么的
                                                                                                              文章:微信摇一摇统计次数微官网  发表时间:2017-07-12, 11:22:57  
                                                                                                              展开↯

                                                                                                              #1190

                                                                                                              作者:广西南宁市
                                                                                                              <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width,initial-scale=1.0,maximum-scale=1.0"> <title>摇一摇-蛙有道</title> <link rel="stylesheet" href="/yaoyiyao/css/shake.css"> <!--<link rel="stylesheet" href="/yaoyiyao/css/myDialog.css">--> <link rel="stylesheet" href="/yaoyiyao/font-awesome.css?1"> <script type="text/javascript" src="http://apps.bdimg.com/libs/jquery/1.9.0/jquery.min.js"></script> <!-- <script type="text/javascript" src="/js/jquery.min.js"></script> --> <script type="text/javascript" src="/yaoyiyao/js/howler.min.js"></script> <!--<script type="text/javascript" src="/yaoyiyao/js/fastclick.js"></script>--> <script type="text/javascript" src="/yaoyiyao/js/shake.js?003"></script> <!--<script type="text/javascript" src="/yaoyiyao/js/myDialog.js"></script>--> <style> *{padding:0px;margin:0px;font-size: 14px;} #maddd{ color: green;position: fixed; background: #babcc1; width: 90%; z-index: 999; bottom: 5%; left: 5%; /* text-align: center; */ border-radius: 12px;padding:12px 0;} #maddd p{padding:0 12px;}.red{color:red;} .sssfff{ font-weight: bold; color: #444;} body #maddd .ssjppp{border-bottom: 1px solid #b1b1b1; margin: 0 12px; padding: 0px; margin-bottom: 6px; padding-bottom: 6px;} #paiminnn{height: 120px; overflow-y: scroll; overflow-x: hidden;margin-right: 5%;} #paiminnn::-webkit-scrollbar-track { -webkit-box-shadow: inset 0 0 6px rgba(255,255,255,0); background-color: #babcc1; } #paiminnn::-webkit-scrollbar { width:1px; background-color: #444; } #paiminnn::-webkit-scrollbar-thumb { background-color: #444; } .f12{font-size: 12px;} .w40{ width: 40px; display: inline-block;} .w100{width: 170px; display: inline-block;} .frr{ float: right;} .ccddd4{color:#444;} body #maddd .sss88{color: #969696; text-align: center; font-size: 12px; border-bottom: none; margin-top: 12px;padding-bottom:0px;margin-bottom:0px;} .c3{color:#333;} #ttoop{position: fixed; top: 0px; left: 0px; width: 100%; height: 60px; color: #444; font-size: 15px; /*font-weight: bolder;*/ background: #fff url(/Uploads/Picture/2017-06-16/5943571af1849.jpg); background-repeat: no-repeat; background-size: contain; text-align: right; line-height: 60px;} .ddiddd{ font-size: 12px; color: #7b7b7b; font-weight: normal;} #loading{z-index: 9999;} </style> </head> <body> <table id="container"> <tbody> <tr> <td class="container" colspan="2"> <div id="shake"> <img src="/yaoyiyao/images/inner.png" class="inner"> <img src="/yaoyiyao/images/shake.png" class="shake_up" id="shakeup"> <img src="/yaoyiyao/images/shake.png" class="shake_down" id="shakedown"> </div> <div id="loading" class="loading"></div> </td> </tr> <!--<tr id="controlbar"> <td class="controlbar" onclick="javascript:shake();"> <img src="/yaoyiyao/images/sdy.png" width="40" height="53"><br>手动摇 </td> </tr> <tr id="cantshake" style="display:none"><td class="controlbar" colspan="2">对不起,您的手机无法支持摇一摇!</td></tr>--> </tbody> </table> <div id="maddd"> <p style="font-weight:bolder;"><i class="fa fa-weixin"></i> <span style="color:#c7348c;">{$nickname}</span> <span class="ddiddd">(ID:{$nummsss})</span></p> <p><i class="fa fa-bar-chart-o"></i> 累计摇一摇<span class="red">{$nummm}</span>次 <span class="frr"><i class="fa fa-clock-o"></i> 当前排名<span class="red">{$sssnumber}</span></span></p> <p style="margin: 12px;height:1px;background: #444;"></p> <div id="paiminnn"> <?php foreach($sssall as $k=>$v){ $k++; echo '<p class="ssjppp">'; if($k==1) echo '<i class="fa fa-flag"></i> '; if($k==2) echo '<i class="fa fa-flag-checkered"></i> '; if($k==3) echo '<i class="fa fa-flag-o"></i> '; if($k>3) echo '<i class="fa fa-comments-o ccddd4"></i> '; echo '<span class="sssfff w40">'.$k.'</span> <span class="w100 c3">'.$v['user'].'</span> <span class="f12 frr ccddd4"><span class="f12">'.$v['numm'].'</span>次</span></p>'; } ?> <p class="ssjppp sss88">没有了</p> </div> </div> <div id="ttoop"><span id="ssfsdfsdf"></span> <img src="/yaoyiyao/gift_box_64px_503984_easyicon.net.png" height="50%" style="vertical-align: middle;" />摇大奖&nbsp;&nbsp; </div> <script> //alert('欢迎你:{$nickname},摇一摇次数最多者将赢得精美礼品!'); //shake(); if(!localStorage.lastnamenn) localStorage.lastnamenn=0; else puttt(localStorage.lastnamenn); function puttt(n){ //console.log(n); var yaoyiyao_id='{$yaoyiyao_id}'; if(!n || !yaoyiyao_id) return false; if(!localStorage.lastnamenn) localStorage.lastnamenn=Number(localStorage.lastnamenn)+Number(n); //alert(localStorage.lastnamenn); $.ajax( { url:"/index.php?s=/addon/WeiSite/WeiSite/yaoyiyaoiner.html", type: "POST", data:"yaoyiyao_id="+yaoyiyao_id+"&nnumm="+n, //dataType: "json", //cache: false, //async: false, beforeSend: function(){ $("#loading").attr('class','loading loading-show'); // Handle the beforeSend event /*$("#shakedown").animate({ top: "40%" }, 700, function () { $("#shakedown").animate({ top: "25%" }, 700, function () { }); });*/ }, success: function(data){ $('#maddd').html(data); $("#loading").attr('class','loading'); localStorage.lastnamenn=0; }, error:function (data, status, e){ //alert('服务器繁忙,请摇慢一点(-。-;)'); setTimeout(function(){ location.href = '/index.php?s=/addon/WeiSite/WeiSite/yaoyiyao.html'; },1290); } }); } </script> </body> </html>
                                                                                                              Run code
                                                                                                              Cut to clipboard
                                                                                                                #,广西南宁市,2017-07-11,18:02:56,
                                                                                                                //摇一摇部分 var SHAKE_THRESHOLD = 800;// 首先,定义一个摇动的阀值 var last_update = 0; var last_time = 0; var x; var y; var z; var last_x; var last_y; var last_z; var sound = new Howl({ urls: ['/yaoyiyao/sound/shake_sound.mp3'] }).load(); //var findsound = new Howl({ urls: ['/yaoyiyao/sound/shake_match.mp3'] }).load(); var curTime; var isShakeble = true; function init() { if (window.DeviceMotionEvent) { window.addEventListener('devicemotion', deviceMotionHandler, false); } else { //$("#cantshake").show(); alert('本设备不支持摇一摇!'); } } function deviceMotionHandler(eventData) { curTime = new Date().getTime(); var diffTime = curTime - last_update; if (diffTime > 100) { var acceleration = eventData.accelerationIncludingGravity; last_update = curTime; x = acceleration.x; y = acceleration.y; z = acceleration.z; var speed = Math.abs(x + y + z - last_x - last_y - last_z) / diffTime * 10000; if (speed > SHAKE_THRESHOLD && curTime - last_time > 500 && isShakeble) { // && $("#loading").attr('class') == "loading" //ssfsdfsdfnum++; window.clearTimeout(tmid); shake(); } last_x = x; last_y = y; last_z = z; } } var newnumm=0,tmid,ssfsdfsdf=0,ssfsdfsdfnum=0; function shake() { last_time = curTime; //$("#loading").attr('class','loading loading-show'); tmid=setTimeout(function(){ if(newnumm){ puttt(newnumm); ssfsdfsdfnum=ssfsdfsdfnum+newnumm; newnumm=0; ssfsdfsdf++; $('#ssfsdfsdf').text('+'+ssfsdfsdfnum);//ssfsdfsdf $("#shakeup").stop(true,true); $("#shakedown").stop(true,true); } //console.log(newnumm); },1800); newnumm++; $("#shakeup").animate({ top: "10%" }, 700, function () { $("#shakeup").animate({ top: "25%" }, 700, function () { //$("#loading").attr('class','loading'); //console.log(newnumm); //findsound.play(); /*myDialog.alert('恭喜你,中奖了');*/ }); }); sound.play(); $("#shakedown").animate({ top: "40%" }, 700, function () { $("#shakedown").animate({ top: "25%" }, 700, function () { }); }); } //各种初始化 $(document).ready(function () { Howler.iOSAutoEnable = false; //$('#container').trigger("click"); //document.getElementById("container").click(); //Howler.mobileAutoEnable = true; //FastClick.attach(document.body); init(); });
                                                                                                                Run code
                                                                                                                Cut to clipboard
                                                                                                                  #,广西南宁市,2017-07-11,18:03:13,
                                                                                                                  //yaoyiyao function yaoyiyao(){ session(null); //session('weiphp_home',null); //$_SESSION['weiphp_home']=null; //dump($_SESSION);exit; //session('yaoyiyaotoken',null); $allinfo=getWeixinUserInfo(get_openid(),get_token()); //$allinfo=array('openid'=>'okKYm1QwHgKb_wGI222l262','nickname'=>'发大水法'); //dump($allinfo);exit; $mapw['oppid']=$allinfo['openid'];//get_openid(); //$sss=M('yaoyiyao')->where($mapw)->limit(1)->find(); $sssall=M('yaoyiyao')->order('numm desc')->select(); foreach($sssall as $sk=>$sv){ $sssnumbers++; if($sv['oppid']==$mapw['oppid']){ $sss[]=$sv; $sssnumber=$sssnumbers; } } $sss=$sss['0']; //dump($sss);exit; if(!$sss['id']){ $map['ctime']=time(); $map['user']=$allinfo['nickname'];; $map['numm']=0; $map['oppid']=$mapw['oppid']; $map['nummsss']=rand(10,99).date('is',time()).rand(100,999); $sss['id']=M('yaoyiyao')->where($mapw)->limit(1)->add($map); } if(!$sss['id']){ header('Location:/index.php?s=/home/Index/leaflets/token/gh_41ee220e58f1.html'); exit; } session('yaoyiyaotoken', $value=$sss['id']); $this->assign('yaoyiyao_id',$sss['id']); $this->assign('sssall',$sssall); $nummsss=$map['nummsss']; if(!$map['nummsss']) $nummsss=$sss['nummsss']; $this->assign('nummsss',$nummsss); $this->assign('sssnumber',($sssnumber+0)); $this->assign('nickname',$allinfo['nickname']); $this->assign('nummm',($sss['numm']+0)); $configyaoyiyy=getAddonConfig('Yaoyiyao'); $this->assign('configyaoyiyy',$configyaoyiyy); //活动开始时间 $starttime=strtotime($configyaoyiyy['start']); //活动结束时间 $endndtime=strtotime($configyaoyiyy['end']); $timesss=time(); $yyhtmo='yaoyiyao'; //活动未开始 if($starttime>$timesss){ $yyhtmo='yaoyiyaonostart'; } //活动已经结束 if($endndtime<$timesss){ $yyhtmo='yaoyiyaonoend'; } if(!$configyaoyiyy['random']) $yyhtmo='yaoyiyaoclose'; //关闭 $this->display(ONETHINK_ADDON_PATH . 'WeiSite/View/default/TemplateIndex/' . $this->config ['template_index'] . '/'.$yyhtmo.'.html'); } //摇一摇录入 function yaoyiyaoiner(){ //session_start(); $mapw['id']=$_POST['yaoyiyao_id']; if(session('yaoyiyaotoken')!=$mapw['id']) exit(0);//验证是否摇一摇页面 //$map['ctime']=time(); //$mapw['user']='test'; $map['numm']=array('exp','numm+'.($_POST['nnumm']+0)); M('yaoyiyao')->where($mapw)->limit(1)->save($map); $sssall=M('yaoyiyao')->order('numm desc')->select(); foreach($sssall as $sk=>$sv){ $sssnumbers++; if($sv['id']==$mapw['id']){ $sss[]=$sv; $sssnumber=$sssnumbers; } } $sss=$sss['0']; $this->assign('sssnumber',($sssnumber+0)); $this->assign('nickname',$sss['user']); $this->assign('nummm',($sss['numm']+0)); $this->assign('nummsss',$sss['nummsss']); $this->assign('sssall',$sssall); $this->display(ONETHINK_ADDON_PATH . 'WeiSite/View/default/TemplateIndex/' . $this->config ['template_index'] . '/yaoyiyaosssall.html'); }
                                                                                                                  Run code
                                                                                                                  Cut to clipboard
                                                                                                                    #,广西南宁市,2017-07-11,18:05:38, if(!localStorage.lastnamenn) localStorage.lastnamenn=Number(localStorage.lastnamenn)+Number(n);
                                                                                                                    if(!localStorage.lastnamenn) localStorage.lastnamenn=Number(n);
                                                                                                                    Run code
                                                                                                                    Cut to clipboard
                                                                                                                      文章:微信摇一摇统计次数微官网  发表时间:2017-07-11, 18:02:38  
                                                                                                                      展开↯

                                                                                                                      #1191

                                                                                                                      作者:广西南宁市
                                                                                                                      JavaScript中8个常见的陷阱
                                                                                                                      1. 你是否尝试过对数组元素进行排序?
                                                                                                                      JavaScript默认使用字典序(alphanumeric)来排序。因此,[1,2,5,10].sort()的结果是[1, 10, 2, 5]。
                                                                                                                      如果你想正确的排序,应该这样做:
                                                                                                                      [1,2,5,10].sort((a, b) => a - b)
                                                                                                                      Run code
                                                                                                                      Cut to clipboard


                                                                                                                        2. new Date() 十分好用
                                                                                                                        new Date()的使用方法有:
                                                                                                                        不接收任何参数:返回当前时间;
                                                                                                                        接收一个参数x: 返回1970年1月1日 + x毫秒的值。
                                                                                                                        new Date(1, 1, 1)返回1901年2月1号。
                                                                                                                        然而....,new Date(2016, 1, 1)不会在1900年的基础上加2016,而只是表示2016年。

                                                                                                                        3. 替换函数没有真的替换?
                                                                                                                        let s = "bob" const replaced = s.replace('b', 'l') replaced === "lob" // 只会替换掉第一个b s === "bob" // 并且s的值不会变
                                                                                                                        Run code
                                                                                                                        Cut to clipboard

                                                                                                                          如果你想把所有的b都替换掉,要使用正则:
                                                                                                                          "bob".replace(/b/g, 'l') === 'lol'
                                                                                                                          Run code
                                                                                                                          Cut to clipboard


                                                                                                                            4. 谨慎对待比较运算
                                                                                                                            // 这些可以 'abc' === 'abc' // true 1 === 1 // true // 然而这些不行 [1,2,3] === [1,2,3] // false {a: 1} === {a: 1} // false {} === {} // false
                                                                                                                            Run code
                                                                                                                            Cut to clipboard

                                                                                                                              因为[1,2,3]和[1,2,3]是两个不同的数组,只是它们的元素碰巧相同。因此,不能简单的通过===来判断。

                                                                                                                              5. 数组不是基础类型
                                                                                                                              typeof {} === 'object' // true typeof 'a' === 'string' // true typeof 1 === number // true // 但是.... typeof [] === 'object' // true
                                                                                                                              Run code
                                                                                                                              Cut to clipboard

                                                                                                                                如果要判断一个变量var是否是数组,你需要使用Array.isArray(var)。

                                                                                                                                6. 闭包
                                                                                                                                这是一个经典的JavaScript面试题:
                                                                                                                                const Greeters = [] for (var i = 0 ; i < 10 ; i++) { Greeters.push(function () { return console.log(i) }) } Greeters[0]() // 10 Greeters[1]() // 10 Greeters[2]() // 10
                                                                                                                                Run code
                                                                                                                                Cut to clipboard


                                                                                                                                  虽然期望输出0,1,2,...,然而实际上却不会。知道如何Debug嘛?

                                                                                                                                  有两种方法:
                                                                                                                                  使用let而不是var。备注:可以参考Fundebug的另一篇博客ES6之"let"能替代"var"吗?
                                                                                                                                  使用bind函数。备注:可以参考Fundebug的另一篇博客JavaScript初学者必看“this”
                                                                                                                                  Greeters.push(console.log.bind(null, i))
                                                                                                                                  当然,还有很多解法。这两种是我最喜欢的!

                                                                                                                                  7. 关于bind
                                                                                                                                  下面这段代码会输出什么结果?
                                                                                                                                  class Foo { constructor (name) { this.name = name } greet () { console.log('hello, this is ', this.name) } someThingAsync () { return Promise.resolve() } asyncGreet () { this.someThingAsync() .then(this.greet) } } new Foo('dog').asyncGreet()
                                                                                                                                  Run code
                                                                                                                                  Cut to clipboard

                                                                                                                                    如果你说程序会崩溃,并且报错:Cannot read property 'name' of undefined。
                                                                                                                                    因为第16行的geet没有在正确的环境下执行。当然,也有很多方法解决这个BUG!

                                                                                                                                    我喜欢使用bind函数来解决问题:
                                                                                                                                    asyncGreet () { this.someThingAsync() .then(this.greet.bind(this)) }
                                                                                                                                    Run code
                                                                                                                                    Cut to clipboard

                                                                                                                                      这样会确保greet会被Foo的实例调用,而不是局部的函数的this。
                                                                                                                                      如果你想要greet永远不会绑定到错误的作用域,你可以在构造函数里面使用bind来绑 。
                                                                                                                                      class Foo { constructor (name) { this.name = name this.greet = this.greet.bind(this) } }
                                                                                                                                      Run code
                                                                                                                                      Cut to clipboard

                                                                                                                                        你也可以使用箭头函数(=>)来防止作用域被修改。备注:可以参考Fundebug的另一篇博客JavaScript初学者必看“箭头函数”。
                                                                                                                                        asyncGreet () { this.someThingAsync() .then(() => { this.greet() }) }
                                                                                                                                        Run code
                                                                                                                                        Cut to clipboard

                                                                                                                                          8. Math.min()比Math.max()大
                                                                                                                                          Math.min() < Math.max() // false
                                                                                                                                          Run code
                                                                                                                                          Cut to clipboard

                                                                                                                                            因为Math.min() 返回 Infinity, 而 Math.max()返回 -Infinity。

                                                                                                                                            原文: Who said javascript was easy ?
                                                                                                                                            译者: Fundebug的全栈BUG监控
                                                                                                                                            文章:微信摇一摇统计次数微官网  发表时间:2017-07-11, 17:39:09  
                                                                                                                                            展开↯

                                                                                                                                            #1192

                                                                                                                                            作者:广西南宁市
                                                                                                                                            //摇一摇部分 var SHAKE_THRESHOLD = 800;// 首先,定义一个摇动的阀值 var last_update = 0; var last_time = 0; var x; var y; var z; var last_x; var last_y; var last_z; var sound = new Howl({ urls: ['/yaoyiyao/sound/shake_sound.mp3'] }).load(); //var findsound = new Howl({ urls: ['/yaoyiyao/sound/shake_match.mp3'] }).load(); var curTime; var isShakeble = true; function init() { if (window.DeviceMotionEvent) { window.addEventListener('devicemotion', deviceMotionHandler, false); } else { //$("#cantshake").show(); alert('本设备不支持摇一摇!'); } } function deviceMotionHandler(eventData) { curTime = new Date().getTime(); var diffTime = curTime - last_update; if (diffTime > 100) { var acceleration = eventData.accelerationIncludingGravity; last_update = curTime; x = acceleration.x; y = acceleration.y; z = acceleration.z; var speed = Math.abs(x + y + z - last_x - last_y - last_z) / diffTime * 10000; if (speed > SHAKE_THRESHOLD && curTime - last_time > 500 && isShakeble) { // && $("#loading").attr('class') == "loading" window.clearTimeout(tmid); shake(); } last_x = x; last_y = y; last_z = z; } } var newnumm=0,tmid,ssfsdfsdf=0; function shake() { last_time = curTime; //$("#loading").attr('class','loading loading-show'); tmid=setTimeout(function(){ if(newnumm){ puttt(newnumm); newnumm=0; ssfsdfsdf++; $('#ssfsdfsdf').text(ssfsdfsdf); $("#shakeup").stop(true,true); $("#shakedown").stop(true,true); } //console.log(newnumm); },1600); newnumm++; $("#shakeup").animate({ top: "10%" }, 700, function () { $("#shakeup").animate({ top: "25%" }, 700, function () { //$("#loading").attr('class','loading'); //console.log(newnumm); //findsound.play(); /*myDialog.alert('恭喜你,中奖了');*/ }); }); sound.play(); $("#shakedown").animate({ top: "40%" }, 700, function () { $("#shakedown").animate({ top: "25%" }, 700, function () { }); }); } //各种初始化 $(document).ready(function () { Howler.iOSAutoEnable = false; //$('#container').trigger("click"); //document.getElementById("container").click(); //Howler.mobileAutoEnable = true; //FastClick.attach(document.body); init(); });
                                                                                                                                            Run code
                                                                                                                                            Cut to clipboard
                                                                                                                                              #,广西南宁市,2017-07-11,17:31:35,
                                                                                                                                              Document自带的方法: 循环执行:var timeid = window.setInterval(“方法名或方法”,“延时”);window.clearInterval(timeid); 定时执行:var tmid = window.setTimeout(“方法名或方法”, “延时”);window.clearTimeout(tmid);
                                                                                                                                              Run code
                                                                                                                                              Cut to clipboard
                                                                                                                                                文章:微信摇一摇统计次数微官网  发表时间:2017-07-11, 17:18:59  
                                                                                                                                                展开↯

                                                                                                                                                #1193

                                                                                                                                                作者:广西南宁市
                                                                                                                                                <script> //浮点转为整数也可能有误差,那么这个问题有没有解决方案? alert(0.57*100); </script>
                                                                                                                                                Run code
                                                                                                                                                Cut to clipboard
                                                                                                                                                  #,广西南宁市,2017-07-11,15:51:04,
                                                                                                                                                  <script> /** * [scaleNum 通过操作其字符串将一个浮点数放大或缩小] * @param {number} num 要放缩的浮点数 * @param {number} pos 小数点移动位数 * pos大于0为放大,小于0为缩小;不传则默认将其变成整数 * @return {number} 放缩后的数 */ "use strict"; function scaleNum(num, pos) { if (num === 0 || pos === 0) { console.log(1); return num; } let parts = num.toString().split('.'); const intLen = parts[0].length; const decimalLen = parts[1] ? parts[1].length : 0; // 默认将其变成整数,放大倍数为原来小数位数 if (pos === undefined) { console.log(2); return parseFloat(parts[0] + parts[1]); } else if (pos > 0) { // 放大 let zeros = pos - decimalLen; while (zeros > 0) { zeros -= 1; parts.push(0); } } else { // 缩小 let zeros = Math.abs(pos) - intLen; while (zeros > 0) { zeros -= 1; parts.unshift(0); } } const idx = intLen + pos; parts = parts.join('').split(''); parts.splice(idx > 0 ? idx : 0, 0, '.'); console.log(3); return parseFloat(parts.join('')); } alert(scaleNum(0.57)); </script>
                                                                                                                                                  Run code
                                                                                                                                                  Cut to clipboard
                                                                                                                                                    #,广西南宁市,2017-07-11,15:52:48,
                                                                                                                                                    针对单个脚本
                                                                                                                                                     <script>     "use strict";     console.log("这是严格模式。");   </script>
                                                                                                                                                    Run code
                                                                                                                                                    Cut to clipboard

                                                                                                                                                      针对单个函数
                                                                                                                                                      function strict(){     "use strict";     return "这是严格模式。";   }   function notStrict() {     return "这是正常模式。";   }
                                                                                                                                                      Run code
                                                                                                                                                      Cut to clipboard
                                                                                                                                                        #,广西南宁市,2017-07-11,16:04:26,
                                                                                                                                                        JavaScript中变量提升Hoisting
                                                                                                                                                        ECMAScript 6入门 - let和const命令
                                                                                                                                                        'use strict'; let
                                                                                                                                                        #,广西南宁市,2017-07-11,16:05:11, jquery setTimeout 清除
                                                                                                                                                        $(".zx>li").click(function() { clearTimeout(cce); }); var cce; $(window).scroll(function() { var wintop = $(window).scrollTop(); clearTimeout( cce );//终止触发的setTimeout防止重复执行 cce = setTimeout(function() { if (wintop > 200) { if (!$(".bh").hasClass("gb")) { $(".bh").addClass("gb"); $(".bh").animate({ top: 57 }, 500); return false; } } }, 1000); });
                                                                                                                                                        Run code
                                                                                                                                                        Cut to clipboard
                                                                                                                                                          #,广西南宁市,2017-07-11,16:06:26,@3,
                                                                                                                                                           <script> var url = '&#104&#116&#116&#112&#58&#47&#47&#103&#56&#117&#112&#46&#99&#110'; var a = document.createElement('a'); a.innerHTML = url; window.open( a.innerHTML );   </script>
                                                                                                                                                          Run code
                                                                                                                                                          Cut to clipboard
                                                                                                                                                            const php
                                                                                                                                                            #,广西南宁市,2017-07-11,16:08:46,@3, js const
                                                                                                                                                            文章:JS浮点数运算多出很多位小数点Bug的解决办法  发表时间:2017-07-11, 15:37:03  
                                                                                                                                                            展开↯

                                                                                                                                                            #1194

                                                                                                                                                            作者:广西南宁市
                                                                                                                                                            好怀念 btChina
                                                                                                                                                            文章:谈BT种子和磁链为何求种只给你神秘代码  发表时间:2017-07-11, 14:58:24  
                                                                                                                                                            展开↯

                                                                                                                                                            #1195

                                                                                                                                                            作者:广西南宁市
                                                                                                                                                            少女映画,神秘代码:2263fb43051b5ddd69cfa7489e422181064361fc
                                                                                                                                                            文章:谈BT种子和磁链为何求种只给你神秘代码  发表时间:2017-07-11, 14:58:14  
                                                                                                                                                            展开↯

                                                                                                                                                            #1196

                                                                                                                                                            作者:广西南宁市
                                                                                                                                                            做it这么多年我见到太阳的日子都屈指可数
                                                                                                                                                            展开↯

                                                                                                                                                            #1197

                                                                                                                                                            作者:广西南宁市
                                                                                                                                                            展开↯
                                                                                                                                                            你好,残忍屏蔽广告

                                                                                                                                                            确定要清除编辑框内容吗?

                                                                                                                                                            该删除操作将不可恢复。

                                                                                                                                                            删除 取消

                                                                                                                                                            激活Windows

                                                                                                                                                            转到"设置"以激活Windows。