var函数

js优化细则整理(详细版)

非 Y 不嫁゛ 提交于 2020-02-15 13:31:53
目录 原生js部分 关于JQ部分 原生js部分 参考文章 js性能优化的小知识 javascript性能优化技巧 JavaScript性能优化之小知识总结 DOM编程 建议将对象进行缓存处理,特别是DOM访问是比较消耗资源的 使用DocumentFragment优化多次append 一旦需要更新DOM,请考虑使用文档碎片来构建DOM结构,然后再将其添加到现存的文档中。 for (var i = 0; i < 1000; i++) { var el = document.createElement('p'); el.innerHTML = i; document.body.appendChild(el); } //可以替换为: var frag = document.createDocumentFragment(); for (var i = 0; i < 1000; i++) { var el = document.createElement('p'); el.innerHTML = i; frag.appendChild(el); } document.body.appendChild(frag); 使用一次innerHTML赋值代替构建dom元素 对于大的DOM更改,使用innerHTML要比使用标准的DOM方法创建同样的DOM结构快得多。 var frag =

[js]javascript高级-学习笔记

不打扰是莪最后的温柔 提交于 2020-02-15 11:39:38
打算做一个js面向对象的贪吃蛇,但是最终是流产了,整理了下废弃的代码,回顾了下PPT.伤.... 一.js面向对象的一种实现   <script type="text/javascript"> function Person() { this.name = "张三"; this.age = 0; var nickName = "小三"; //类似私有变量,函数中的局部变量在函数执行完后自动销毁. this.SayHi = function () { alert("我的名字是" + this.name + " ,大家都叫我" + nickName + " ,我今年已经" + this.age + "岁了"); } } ///////////////////////// function Student(myclass, myteacher) { this.myClass = myclass; this.myTeacher = myteacher; this.SayHi = function () { if (this.myClass != undefined) { alert("我是"+this.myClass+"的"+this.name); } else if (arguments.length == 2) { alert("我是" + this.myClass + "的" +

js9大陷阱

99封情书 提交于 2020-02-15 07:59:10
1. 区分大小写:变量名、属性和方法全部都区分大小写 2. 不匹配的引号、圆括号或花括号将抛出错误 3. 条件语句:3个常见陷阱 4. 换行:一直用分号结束语句来避免常见的换行问题 5. 标点法:在对象声明的尾部逗号将导致出错 6. HTML id 冲突 7. 变量作用域:全局变量对局部变量 8. 函数重载:当重载不存在时,覆盖函数 9. 区分string.replace()函数不是全局的 10. parseInt应该包含两个参数 11. “this”和绑定问题 12. 为参数设置默认值,以免你遗漏它们 13. for each循环是用于对象而不是数组 14. switch语句需要点技巧 15. 总是在检查undefined前检查null 16. 时间处理陷阱 区分大小写 变量名和函数名都是区分大小写的。就像配错的引号一样,这些大家都知道。但是,由于错误是不作声的,所以这是一个提醒。为自己选择一个命名规则,并坚持它。而且,记住 源码 外你会少一些顾虑:所以当移动代码且最终导致两个语句在一行时,你无需担心第一个语句是否正确结束。 多余的逗号 在任何JavaScript对象定义中,最后一个属性决不能以一个逗号结尾。 Firefox 不会出错,而IE会报语法错误。 var theObj = { city : "Boston", state : "MA",//IE6和IE7中有“缺少标识符

JS的内建函数reduce

陌路散爱 提交于 2020-02-15 01:12:08
reduce函数 ,是ECMAScript5规范中出现的数组方法。在平时的工作中,相信大家使用的场景并不多,一般而言,可以通过reduce方法实现的逻辑都可以通过forEach方法来变相的实现,虽然不清楚浏览器的js引擎是如何在C++层面实现这两个方法,但是可以肯定的是reduce方法肯定也存在数组的遍历,在具体实现细节上是否针对数组项的操作和存储做了什么优化,则不得而知。 数组的reduce方法的应用 reduce方法有两个参数,第一个参数是一个callback,用于针对数组项的操作;第二个参数则是传入的初始值,这个初始值用于单个数组项的操作。需要注意的是,reduce方法返回值并不是数组,而是形如初始值的经过叠加处理后的操作。 reduce方法最常见的场景就是叠加。 var items = [10, 120, 1000]; // our reducer function var reducer = function add(sumSoFar, item) { return sumSoFar + item; }; // do the job var total = items.reduce(reducer, 0); console.log(total); // 1130 可以看出,reduce函数根据初始值0,不断的进行叠加,完成最简单的总和的实现。 前文中也提到

JavaScript局部变量与全局变量2

試著忘記壹切 提交于 2020-02-15 01:08:14
看以下这段代码: <html> <body> <script> class1 = function() { // 私有属性 var m_first = 1; var m_second = 2; // 私有方法 function method1() { alert(m_first); } var method2 = function() { alert(m_second); } // 构建函数 { method1(); method2(); } } var o = new class1(); // 提示未定义 alert(o.m_first); // 错误:对象不支持此属性或方法 o.method1(); </script> </body> </html> 这段代码其实是在介绍JavaScript如何建立一个私有变量与私有方法。这个不是大问题。要关注的是,进入类后,类的私有方法就可以使用类的私有变量了,一层层的,有意思。而 类的私有方法使用全局变量也是正常,没有悬念。类的公用方法使用类的私有变量或全局变 量亦没有问题。 var i=2; …… this.method3=function () //类的公用方法 { alert (m_first + ":" + i); //使用类的私有变量与全局变量 } …… 这里有列出两种构建私有函数的方法(常规函数定义与匿名函数赋给变量)

golang学习笔记(一):包,变量,函数

旧街凉风 提交于 2020-02-15 00:23:29
欢迎访问我的 博客 和 github ! go 语言学习笔记第一弹,来自 gotour ,以后要常写笔记,把自己学习笔记记录下来,就算只是笔记也要多写。 好记性不如烂笔头,也要多锻炼自己的写作能力。 说实话,今天很累了,最近在折腾操作系统内核,因为原先写了个bootloader,现在想要转向 grub 来,遇到坑太多了,已经两天了😭。 还是接触一点新知识简单的东西,来缓冲一下,脑子迷迷糊糊的。 package 每个Go程序由很多包组成。 程序都是从 main 包开始运行。 该程序正在使用导入路径为“ fmt”和“ math / rand”的软件包。 按照约定,程序包名称与导入路径的最后一个元素相同。 例如,“ math / rand”包包括以语句包rand开头的文件。 import 此代码将导入分组为带括号的“分解的”导入语句。 您还可以编写多个导入语句,例如: package main import ( "fmt" "math" ) func main() { fmt.Println(math.Pi) } 但是使用分解式import语句是一种很好的样式。 导出名称 在Go中,如果名称以大写字母开头,则导出该名称。 例如,Pizza是一个导出的名称,Pi也是,它是从math包导出的。 pizza和pi不以大写字母开头,所以它们不被导出。 在导入包时,您只能引用它导出的名称。任何

执行innerHTML中的javascript

依然范特西╮ 提交于 2020-02-14 14:34:15
function execInnerScript(innerhtml) { var temp = innerhtml.replace( / \n | \r / g, "" ); var regex =/< script. +?< \ / script >/ gi; var arr = temp.match(regex); if (arr) { for ( var iiiiiiiiii_iii = 0 ;iiiiiiiiii_iii < arr.length;iiiiiiiiii_iii ++ ) { var temp1 = arr[iiiiiiiiii_iii]; var reg = new RegExp( " ^<script(.+?)>(.+)<\/script>$ " , " gi " ); reg.test(temp1); eval(RegExp.$ 2 ); } } } 在将代码用innerHTML方式插入到网页的时候,里面的javascript不会被执行,通过调用上面的方法可以执行. 需要注意的是如果代码内定义了全局函数必须按下面的格式申明,否则外部调用的时候会出错. window.a = function () { // 函数代码 } 来源: https://www.cnblogs.com/liaowei/archive/2007/08/20/863006.html

函数面试题

[亡魂溺海] 提交于 2020-02-13 23:20:24
第一题 var a = 1; function b() { a = 10; return; function a() {} } b(); console.log(a); 输出: 1 第二题 function foo(){ function bar() { return 3; } return bar(); function bar() { return 8; } } alert(foo()); 输出: 8 第三题 function parent() { var hoisted = "I'm a variable"; function hoisted() { return "I'm a function"; } return hoisted(); } console.log(parent()); 输出: “TypeError: hoisted is not a function” 第四题 alert(foo()); function foo() { var bar = function() { return 3; }; return bar(); var bar = function() { return 8; }; } 输出: 3 第五题 var myVar = 'foo'; (function() { console.log('Original value was: ' +

js代码预解析

为君一笑 提交于 2020-02-13 10:29:07
1、var一般用于声明变量,预解析代码的时候,等号后面的赋值过程不会执行,所以预解析时的var变量都是未定义的 2、function声明的函数,预解析的时候,值就是函数里面的内容 例:console.log(c)   var c = 1;   console.log(c)   function c( ){console.log(2)}   预解析过程:var c;       function c( ){console.log(2)};       console.log(c)  // function c( ){console.log(2)};       c = 1;       console.log(c)  // 1        来源: https://www.cnblogs.com/cuishuangshuang/p/12302385.html

js 合并两个数组,去除重复项,只留一个

青春壹個敷衍的年華 提交于 2020-02-13 08:54:39
//It's merge arr1 and arr2 , delete the same element only leave one //It's only apdapter array. If object, no. //The sequence of the two array is not required. mergeArray:function (arr1, arr2){ for (var i = 0 ; i < arr1.length ; i ++ ){ for(var j = 0 ; j < arr2.length ; j ++ ){ if (arr1[i] === arr2[j]){ arr1.splice(i,1); //利用splice函数删除元素,从第i个位置,截取长度为1的元素 } } } //alert(arr1.length) for(var i = 0; i <arr2.length; i++){ arr1.push(arr2[i]); } return arr1; } 另:前替是两个数组中的项没有重复,如果重复,将不能达到想要的效果 来源: https://www.cnblogs.com/Denny_Yang/archive/2011/03/10/1979916.html