干草捆,北约克郡,英格兰 (© Nick Brundle Photography/Getty Images)

Welcom to 评论 - lizhenqiu blog!

    #2148

    作者:广西南宁市
    javascript数组全排列,数组元素所有组合
    function permute(input) { var permArr = [], usedChars = []; function main(input){ var i, ch; for (i = 0; i < input.length; i++) { ch = input.splice(i, 1)[0]; usedChars.push(ch); if (input.length == 0) { permArr.push(usedChars.slice()); } main(input); input.splice(i, 0, ch); usedChars.pop(); } return permArr } return main(input); }; console.log(permute([5, 3, 7, 1]));
    Run code
    Cut to clipboard
      文章:Google方程式 WWWDOT – GOOGLE = DOTCOM  发表时间:2016-09-23, 16:42:25  
      展开↯

      #2149

      作者:广西南宁市
      不骄不躁,不拘泥于此,时刻保持一颗归零的心,做必然之事
      文章:成功的故事只能倒叙着讲  发表时间:2016-09-23, 16:34:46  
      展开↯

      #2150

      作者:广西南宁市
      javascript数据类型理解整理

      起因:关于数据类型这块,自己看了很多遍相关的资料,每次查看和实践都有一些体会和理解;但又感到没有理解透,总是差一点,最近又在看这块的内容,加上最近的积累,做个相关笔记

      ECMAScript数据类型:
      1. 5中简单数据类型:String Number Boolean Undefined Null
      2. 1种复杂数据类型:Object,本质是一组无序的名值对组成的,eg:Array JSON ...
      【理解】对于JS数据方面的操作,都是数据类型之间的转换和操作,只要针对的攻克每一种数据类型,在逐步的融合,JS水平会有一个很好的进步;

      typeof操作符
      1. 这是个操作符,不是方法
      2. 之所以typeof存在,是因为ECMAScript是松散类型的语言;松散类型就是变量可以是任意数据类型,可以任意转换(不推荐)
      typeof(String) => string => 如果这个值是字符串 typeof(Number) => number => 如果这个值是数值 typeof(Boolean) => boolean => 如果这个值是布尔值 typeof(Undefined) => undefined => 如果这个值未定义 typeof(Object) => object => 如果这个值是对象或null typeof(Function) => function => 如果这个值是函数
      Run code
      Cut to clipboard

        一、 Undefined类型

        当【声明】一个变量,但是【未初始化】,这个变量的值就是undefined
        一直以来的困惑:
        1. 对【未初始化】的变量执行typeof操作符,返回undefined值
        2. 对【未声明】的变量执行typeof操作符,返回undefined值
        var message; console.log(typeof message); // undefined console.log(typeof age); // undefined
        Run code
        Cut to clipboard

          困惑:导致自己一直不知道该怎么解决这个问题,书上标注的解决办法是:显式的使用undefined来给没有初始化的变量进行赋值,每次实践的结果和书上说的有出入
          感悟:自己刚刚结合了jQuery上的$.type()的工具函数,和自己写的一些例子
          var message; // jQuery中$.type()工具函数 console.log($.type(message)); // undefined console.log($.type(age)); // 【报错】age is not defined // 自己理解写的例子 console.log(message==undefined); // true console.log(age==undefined); // 【报错】age is not defined
          Run code
          Cut to clipboard

            所以,无论从$.type()的角度看,验证结果;还是从例子中查看结果,都可以看出,对于【未声明】和【未初始化】分离和验证都不是难题;
            【注】对于$.type()的原理实现,是否是我例子中的方法,我还没有验证;当然这不是重点,重点是,妈妈再也不担心我分不清【未声明】和【未初始化】了;
            【项目中】在实际的项目中,肯定是不允许有报错行为的,这样大大的影响了程序的进一步运行;所以,用下面这种方式:
            var message; // jQuery中$.type()工具函数 console.log($.type(message)); // undefined try{ console.log($.type(age)); // 不报错了 }catch(e){ console.log("age is not defined!"); }; // 自己理解写的例子 console.log(message==undefined); // true try{ console.log(age==undefined); // 不报错了 }catch(e){ console.log("age is not defined!"); };
            Run code
            Cut to clipboard

              二、Null类型

              1.从逻辑的角度,null值表示一个空对象指针
              2.typeof(null),返回object
              3.如果定义的变量未来准备用来保存对象,最好将其初始化成null
              只要检测出来不是null就可以进行下一步操作:
              if(ele != null){ //要执行的代码 }
              4.undefined值是派生自null值,因此:console.log(undefined == null); //true
              console.log(undefined == null); // true // 从JS角度 console.log(typeof undefined); // undefined console.log(typeof null); // object // 从jQuery角度 console.log($.type(undefined)); // undefined console.log($.type(null)); // null
              Run code
              Cut to clipboard

                三、Boolean类型

                1.有两个字面量:true and false
                2.区分大小写,只有全小写形式,属于Boolean类型,其余的只是标识符
                3.转型函数Boolean(),将任意类型的字符转换成Boolean类型
                转换规则:
                数据类型 => true => false
                String类型 => 任意非空字符串 => ""(空字符串) Number类型 => => 任意非零数字值(包括无穷大) => 0和NaN Boolean类型 => true => false Object类型 => 任意对象 => null Undefined类型 => n/a(or N/A),意思是不适用(not applicable) => undefined
                Run code
                Cut to clipboard

                  四、Number类型

                  1.数值字面量表示方式:十进制、八进制(严格模式不支持,直接报错)、十六进制
                  八进制:第一位必须是0,然后是八进制数字序列(0~7)
                  十六进制:前两位必须是0x,后跟十六进制数字序列(0~9及A~F),字母(A~F)大小写都可以
                  算术计算时:所有以八进制和十六进制表示的数值最终都将被转换成十进制数值
                  正零 == 负零(+0 == -0)

                  2.浮点数值
                  就是数值中包含一个小数点,小数点后必须至少有一位数字
                  小数点前面可以没有整数,但是不推荐(.1)
                  保存浮点数值所需的内存空间是保存整数的两倍,所以下面这些浮点数,会当做整数处理
                  1. => 1 10.0 => 10
                  Run code
                  Cut to clipboard

                    对于极大极小的数值,可以用e表示法(即科学计数法)来表示浮点数值;e前面的数值*10的指数次幂,幂是e后面的数值
                    3.125e7 == 31250000 0.00000000000000003 == 3e-17
                    Run code
                    Cut to clipboard

                      默认情况下,ECMAScript会将那些小数点后面带有6个零以上的浮点数值转换成e表示法
                      浮点数值的最高精度是17位小数,但在进行算数计算时其精确度远远不如整数
                      0.1 + 0.2 != 0.3 0.1 + 0.2 != 0.30000000000000004
                      Run code
                      Cut to clipboard

                        【注】浮点数值计算有舍入误差,其它基于IEEE754数值的浮点数计算语言都有这类通病

                        3.数值范围
                        由于内存的限制,ECMAScript不能保存世界上所有的数值
                        最小值:Number.MIN_VALUE 最大值:Number.MAX_VALUE
                        Run code
                        Cut to clipboard


                          最值具体等于多少数值,不同的浏览器有不同的结果,具体以实际为准
                          数值计算结果超出最值范围,将被自动转换成特殊的正值是Infinity(正无穷)值,负值是-Infinity(负无穷)
                          判断某个数值是不是有穷数值(是不是位于最小值和最大值之间),可以使用isFinish()函数,结果是有穷的返回true,否则false
                          var num = Number.MIN_VALUE + Number.MAX_VALUE; console.log(num); // false
                          Run code
                          Cut to clipboard

                            Infinity和-Infinity保存只
                            Number.POSITIVE_INFINITY == Infinity Number.NEGATIVE_INFINITY == -Infinity
                            Run code
                            Cut to clipboard

                              4.NaN
                              NaN,即非数值(Not a Number)是一个特殊的数值,当数值计算出现错误的时候,返回NaN,如:任何数除以0会返回NaN,这样不影响其它代码的执行
                              两个特点:
                              --- 1.任何涉及NaN的操作(NaN/10)都会返回NaN,这个特性在多步计算中有可能导致问题
                              --- 2.NaN与任何值都不相等,包括NaN本身
                              console.log(NaN == NaN); // false
                              Run code
                              Cut to clipboard

                                isNaN()函数,这个函数接收一个参数,该参数可以是任何类型;意思是是否【不是数值】
                                当参数不是数值时,返回true;当参数是数值时,返回false
                                console.log(isNaN("10")); // false console.log(isNaN("blue")); //true
                                Run code
                                Cut to clipboard

                                  isNaN()也适用于对象,首先调用对象的valueof()方法=?是否可以转换为数值,如果不能,在调用toString()方法
                                  文章:Google方程式 WWWDOT – GOOGLE = DOTCOM  发表时间:2016-09-23, 16:33:54  
                                  展开↯

                                  #2151

                                  作者:广西南宁市
                                  平年闰年判断
                                  function isLeapYear(year){ return (new Date(year,2,0)).getDate()==29; }
                                  Run code
                                  Cut to clipboard
                                    文章:Google方程式 WWWDOT – GOOGLE = DOTCOM  发表时间:2016-09-23, 16:17:19  
                                    展开↯

                                    #2152

                                    作者:广西南宁市
                                    确定天数
                                    function sureDay(year,month){ return (new Date(year,month,0)).getDate() }
                                    Run code
                                    Cut to clipboard
                                      文章:Google方程式 WWWDOT – GOOGLE = DOTCOM  发表时间:2016-09-23, 16:16:48  
                                      展开↯

                                      #2153

                                      作者:广西南宁市
                                      JS数组元素排列组合
                                      function permutate(array,permutatedArray){ if(!permutatedArray){ permutatedArray = []; } if(array.length > 1){ //弹出第一个数 var elementCur = array.shift(); //排列剩余的数组 permutate(array,permutatedArray); //返回剩余的数组的排列长度 var permutatedArrayLen = permutatedArray.length; //第一个数与其他剩余数组所有数组组合 for(var j = 0;j < permutatedArrayLen; j++){ //弹出不齐的组 var p = permutatedArray.shift(); //把当前元素放到排列好的数组的所有位置 for(var i = 0; i <= p.length; i++){ //复制排列好的数组 var r = p.slice(0); //插入数据到数组的位置 r.splice(i, 0, elementCur); //保存 permutatedArray.push(r) } } //退出条件 }else{ permutatedArray.push([array[0]]); } return permutatedArray; }
                                      Run code
                                      Cut to clipboard
                                        文章:Google方程式 WWWDOT – GOOGLE = DOTCOM  发表时间:2016-09-23, 16:16:05  
                                        展开↯

                                        #2154

                                        作者:广西南宁市
                                        js字符串转换成数字
                                        parseInt('123') : 返回 123(int); parseInt('1234xxx') : 返回 1234(int);
                                        Run code
                                        Cut to clipboard

                                          parseInt(string) : 函数从string的开始解析,返回一个整数。
                                          如果解析不到数字,则将返回一个NaN的值,可以用isNaN()函数来检测;
                                          var i = parseInt('abc'); if (isNaN(i)) { alert('NaN value'); }
                                          Run code
                                          Cut to clipboard

                                            同样的parseFloat函数是将字符串转换成浮点数。
                                            举例:
                                            parseFloat('31.24abc') : 返回 31.24;
                                            Run code
                                            Cut to clipboard


                                              js数字转换成字符串
                                              将字符串转换成数字,得用到String类的toString方法
                                              var i = 10; var s = i.toString(); alert(typeof s); //将输出 String
                                              Run code
                                              Cut to clipboard


                                                js数字与字符串的区别
                                                js的数字的加法与字符串的连接都是 + 符号, 所以究竟是加还是字符串的连接就取决与变量的类型。
                                                var a = 'abc' + 'xyz'; //a的值为:abcxyz,字符串与字符串是连接 var a = 10 + 5; //a的值为:15,数字是加 var a = 'abc' + 10; //a的值为:abc10,字符串与数字,自动将10转换成字符串了 var a = 'abc' + 10 + 20 + 'cd'; //a的值为:abc1020cd var a = 10 + 20 + 'abc' + 'cd'; //a的值为:30abccd,可以数字加的先数字加,然后再连接
                                                Run code
                                                Cut to clipboard


                                                  如果从html页面元素得到的值,想按数字加,就需要先转换为数字,因为从页面得到的值默认是字符串。
                                                  文章:Google方程式 WWWDOT – GOOGLE = DOTCOM  发表时间:2016-09-23, 16:14:56  
                                                  展开↯

                                                  #2155

                                                  作者:广西南宁市
                                                  Google方程式 WWWDOT – GOOGLE = DOTCOM
                                                  前端语言 浏览器 JavaScript算法
                                                  <script> var mycars = new Array() //加x元素保证有0-9个数字 mycars[0] = "w" mycars[1] = "d" mycars[2] = "o" mycars[3] = "t" mycars[4] = "g" mycars[5] = "l" mycars[6] = "e" mycars[7] = "c" mycars[8] = "m" mycars[9] = "x" permutate(mycars); function sff(s,v){ var u=s.indexOf(v); if(u!='-1') return u.toString(); else return false; } function permutate(array,permutatedArray){ if(!permutatedArray){ permutatedArray = []; } if(array.length > 1){ //弹出第一个数 var elementCur = array.shift(); //排列剩余的数组 permutate(array,permutatedArray); //返回剩余的数组的排列长度 var permutatedArrayLen = permutatedArray.length; //第一个数与其他剩余数组所有数组组合 for(var j = 0;j < permutatedArrayLen; j++){ //弹出不齐的组 var p = permutatedArray.shift(); //把当前元素放到排列好的数组的所有位置 for(var i = 0; i <= p.length; i++){ //复制排列好的数组 var r = p.slice(0); //插入数据到数组的位置 r.splice(i, 0, elementCur); //保存 permutatedArray.push(r) //console.log(r);return false; if(r.length==10) { var w=sff(r,'w'); var d=sff(r,'d'); var o=sff(r,'o'); var t=sff(r,'t'); var g=sff(r,'g'); var l=sff(r,'l'); var e=sff(r,'e'); var c=sff(r,'c'); var m=sff(r,'m'); //WWWDOT – GOOGLE = DOTCOM var wwwdot=parseInt(w+w+w+d+o+t); var google=parseInt(g+o+o+g+l+e); var dotcom=parseInt(d+o+t+c+o+m); var nnnwwwwdot=google+dotcom; if(wwwdot==nnnwwwwdot){ console.log(wwwdot+'='+google+'+'+dotcom); //return true; } } //console.log(r); } } //退出条件 }else{ permutatedArray.push([array[0]]); } return permutatedArray; } </script>
                                                  Run code
                                                  Cut to clipboard
                                                    文章:Google方程式 WWWDOT – GOOGLE = DOTCOM  发表时间:2016-09-23, 16:12:16  
                                                    展开↯

                                                    #2156

                                                    作者:广西南宁市
                                                    单单看到这样的百度就让人觉得惋惜,就好像看到一位江湖高手退缩在墙角,被一位手拿树枝的小朋友鞭打。而他本可以去做更有意义的事。
                                                    展开↯

                                                    #2157

                                                    作者:广西南宁市
                                                    jquery 回车事件
                                                    简单地记下jquery实现回车事件,代码如下:
                                                    全局:
                                                    $(function(){ document.onkeydown = function(e){ var ev = document.all ? window.event : e; if(ev.keyCode==13) { $('#FormId).submit();//处理事件 } } });
                                                    Run code
                                                    Cut to clipboard

                                                      某个控件:
                                                      $('#id').keydown(function(e){ if(e.keyCode==13){ $('#FormId).submit(); //处理事件 } }); if (window.event.keyCode==13) window.event.keyCode=0   //这样就取消回车键了
                                                      Run code
                                                      Cut to clipboard

                                                        如果想模拟Tab键,只要写成  
                                                        if (window.event.keyCode==13) window.event.keyCode=9
                                                        Run code
                                                        Cut to clipboard
                                                          就行了,它会跳到另一个元素上。
                                                          文章:常用html、demo代码  发表时间:2016-09-22, 16:03:11  
                                                          展开↯

                                                          #2158

                                                          作者:广西南宁市
                                                          中国人除了你比较贱,其它的都还好。
                                                          文章:鲁迅说,在中国,搬一张桌子是要流血的  发表时间:2016-09-21, 11:28:56  
                                                          展开↯

                                                          #2159

                                                          作者:广西南宁市
                                                          不是前人太懒,只是时代发展太快。
                                                          文章:鲁迅说,在中国,搬一张桌子是要流血的  发表时间:2016-09-21, 11:01:10  
                                                          展开↯

                                                          #2160

                                                          作者:北京市
                                                          讲真,看看你努力合群的样子,自己是不是也有点心疼?
                                                          文章:他不是脾气暴躁,只是不能被打扰  发表时间:2016-09-19, 23:34:50  
                                                          展开↯

                                                          #2161

                                                          作者:广西南宁市
                                                          虽然自己只是一个高中生 但当过一年半的社长 感觉办活动的时候最害怕的就是执行 很害怕得罪人又担心其实不够别人说三道四 最后解决问题四个字很很实在很精辟 对
                                                          learn by doing
                                                          说明你在工作中总爱寻求别人的认同感,这样会使你失去主动权,不如学会放下,让自己变成想要成为的样子,而不是他人认为的样子,或许你会收获到快乐和幸福!
                                                          感谢这篇文章作者
                                                          文章:成功的故事只能倒叙着讲  发表时间:2016-09-19, 11:43:09  
                                                          展开↯

                                                          #2162

                                                          作者:广西南宁市
                                                          我认为吧,更多的选择和试错的机会是最重要的,屌丝错一次就可能致命了。
                                                          文章:需要人在深夜痛哭的努力,往往是最为糟糕的  发表时间:2016-09-19, 11:20:14  
                                                          展开↯

                                                          #2163

                                                          作者:广西南宁市
                                                          个人觉得格局的大小,和一个人的穷富是没有直接关系的。格局也未必就等于见识,它会受外界的影响,但归根还是由内体现出来的东西。
                                                          文章:需要人在深夜痛哭的努力,往往是最为糟糕的  发表时间:2016-09-19, 11:19:56  
                                                          展开↯

                                                          #2164

                                                          作者:广西南宁市
                                                          就是选择比努力重要的另一种说法吧
                                                          文章:需要人在深夜痛哭的努力,往往是最为糟糕的  发表时间:2016-09-19, 11:19:40  
                                                          展开↯

                                                          #2165

                                                          作者:广西南宁市
                                                          读完了心里还是蛮不舒服的,富人的手里握着大把的资源和优秀的平台,其实在很多方向上可以少走弯路就站在一个不错的高度。可是穷人几乎什么都没有,说穷人误把“辛苦”当做“努力”我觉得有点侮辱的感觉。在穷人变成富人的过程中,穷人从没奢望过自己会变成什么样子,他也只是单单的为了那几个简单的梦想,或是仅仅为了更优质的生活,谁知道最后会有了那么一番大事业不是么?我还是觉得作者对成功的理解和我的理解有偏差,在你眼中得到什么或者做到什么样子才算是成功呢?
                                                          文章:需要人在深夜痛哭的努力,往往是最为糟糕的  发表时间:2016-09-19, 11:17:43  
                                                          展开↯

                                                          #2166

                                                          作者:广西南宁市
                                                          很多时候,也许我们的努力与我们的生活“不配”。
                                                          这个世界,只要肯为一件事情努力,用长远的眼光去看,总有一天用得到的。
                                                          我们生活在一个信息发达的时代,学习与资金投入不一定是成正比的。。。。因为资源太多了。只要你肯想办法。
                                                          文章:需要人在深夜痛哭的努力,往往是最为糟糕的  发表时间:2016-09-19, 11:17:01  
                                                          展开↯
                                                          你好,残忍屏蔽广告

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

                                                          该删除操作将不可恢复。

                                                          删除 取消

                                                          激活Windows

                                                          转到"设置"以激活Windows。