js代码

js闭包

前提是你 提交于 2019-12-19 06:30:30
1、什么是js闭包?   闭包的英文单词是closure,是指有权访问另一个函数作用域中变量的函数。   在本质上,闭包就是将函数内部和函数外部链接起来的一座桥梁。内层的函数可以使用外层函数的所有变量,即使外层函数已经执行完毕。   这是JavaScript中非常重要的一部分知识,因为使用闭包可以大大减少代码量,是代码看上去更加清晰等,功能十分强大。 2、闭包的优缺点?   优点:可以把局部变量驻留在内存中,可以避免使用全局变量。   缺点:也有占用更多内存的缺点,用完要及时让垃圾回收器回收,否则会占用更多内存。   闭包两种访问方式会有不同的结果,()()双括号访问方式会出错,先复制后的但括号方式是对的。 3、闭包相关知识点   常见的方式是在函数创建另一个函数   闭包的第一个用途:通过闭包可以访问局部变量   闭包的第二个用途:可以让局部变量的值始终保持在内存中     优点:可以把局部变量驻留在内存中,可以避免使用全局变量;全局变量在复杂程序中会造成许多麻烦(比如命名冲突、垃圾回收等),所以推荐使用私有的,封装的局部变量,而闭包可以实现这一点。     缺点:由于闭包里作用域返回的局部变量资源不会被立刻销毁回收,所以可能占用更多的内存,所以过度使用闭包会导致性能下降 来源: https://www.cnblogs.com/liutianchuan/p/10732028

js函数的概念及作用 作用域

半腔热情 提交于 2019-12-19 04:46:37
函数的概念和作用 函数 函数对于任何语言来说都是一个核心概念,通过函数可以封装任意多条语句,而且可以在任何地方任何时候调用执行。函数使用 function 关键字声明后面跟一组参数以及函数体。语法如下: function functionName ( arg1 , arg2 ) { // 这里是要执行的代码 } 示例: <!DOCTYPE html> <html> <head> <script> function myFunction(){ alert("Hello World!"); } </script> </head> <body> <button οnclick="myFunction()">点击这里</button> </body> </html> 定义:函数是由事件驱动的或者当它被调用时执行的可重复使用的代码块。当调用该函数时,会执行函数内的代码。可以在某事件发生时直接调用函数(比如当用户点击按钮时),并且可由 JavaScript 在任何位置进行调用。 函数参数 ECMAScript 中函数的参数与大多数其他语言中的函数的参数有所不同,ECMAScript 中的函数不介意你传递多少个参数,也不会在意传递进来的参数是什么数据类型。 在调用函数时,您可以向其传递值,这些值被称为参数。这些参数可以在函数中使用。可以发送任意多的参数,由逗号 (,) 分隔: function

JS编程规范

假装没事ソ 提交于 2019-12-19 04:12:48
  在第一家公司用C++时,公司有着严格的代码规范,甚至到了严苛的地步,现在回想起来,对它充满感激。一个好的习惯让你收益终身。   之后使用JS/TS却没有为自己定一套编程规范,所幸为时不晚,在这里参考airbnb公司代码规范。    -----该规范转载至阮一峰大大的ES入门   1.块级作用域   1)let 取代var   ES6 提出了两个新的声明变量的命令: let 和 const 。其中, let 完全可以取代 var ,因为两者语义相同,而且 let 没有副作用。    'use strict'; if (true) { let x = 'hello'; } for (let i = 0; i < 10; i++) { console.log(i); }      上面代码如果用 var 替代 let ,实际上就声明了两个全局变量,这显然不是本意。变量应该只在其声明的代码块内有效, var 命令做不到这一点。   var 命令存在变量提升效用, let 命令没有这个问题。 'use strict'; if (true) { console.log(x); // ReferenceError let x = 'hello'; }      上面代码如果使用 var 替代 let , console.log 那一行就不会报错,而是会输出 undefined

javascript json对象

孤街浪徒 提交于 2019-12-19 03:43:20
文本生成json对象,必须在外面加一对括号。 因为 JSON 是 javascript 的一个子集,所以,在 javascript 中使用 JSON 是非常简单的。 js 代码 var myJSONObject = { "bindings" : [ { "ircEvent" : "PRIVMSG" , "method" : "newURI" , "regex" : "^http://.*" }, { "ircEvent" : "PRIVMSG" , "method" : "deleteURI" , "regex" : "^delete.*" }, { "ircEvent" : "PRIVMSG" , "method" : "randomURI" , "regex" : "^random.*" } ] }; 在上面的例子中,我们创建了只包含一个成员 "bindings" 的一个对象, bindings 则包含了一个由3个对象组成的数组。这3个对象都包含3个成员: "ircEvent", "method" , "regex"。 在 javascript 中, 成员可以通过“点号”来获取。 比如: js 代码 myJSONObject.bindings[0].method 通过eval() 函数可以将 JSON 字符串转化为对象。 js 代码 var myObject = eval('(

[js高手之路]Vue2.0基于vue-cli+webpack同级组件之间的通信教程

给你一囗甜甜゛ 提交于 2019-12-19 03:22:59
在这之前,我已经分享过组件与组件的通信机制以及父子组件之间的通信机制,而我们的vuex就是为了解决组件通信问题的 vuex是什么东东呢? 组件通信的本质其实就是在 组件之间传递数据或组件的状态(这里将数据和状态统称为状态) ,但可以看到如果我们通过最基本的方式来进行通信,一旦需要管理的状态多了,代码就会变得十分臃肿和庞大。对所有状态的管理便会显得力不从心,因此,vuex出现了,他就是帮助我们把公用的状态全抽出来放在vuex的容器中,然后根据一定的规则来进行管理,我们赶紧来用一下吧,想要掌握vuex的用法,你应该要掌握组件之间的通信,如果不了解,请参考以下这两篇文章: [js高手之路]Vue2.0基于vue-cli+webpack父子组件通信教程 [js高手之路]Vue2.0基于vue-cli+webpack同级组件之间的通信教程 搭建环境开始: 在git命令行下,执行以下命令完成环境的搭建: 1,npm install --global vue-cli 安装vue命令行工具 2,vue init webpack vue-demo 使用vue命令生成一个webpack项目,项目名称为vue-demo 3,cd vue-demo 切入项目 4,npm install安装package.json中的所有依赖包 5,npm run dev运行项目 然后删除默认的Hello.vue组件

微信公众号开发之微信JSSDK

丶灬走出姿态 提交于 2019-12-19 03:09:18
概述   微信JS-SDK是微信公众平台面向网页开发者提供的基于微信内的网页开发工具包。   通过使用微信JS-SDK,网页开发者可借助微信高效地使用拍照、选图、语音、位置等手机系统的能力,同时可以直接使用微信分享、扫一扫、卡券、支付等微信特有的能力, 为微信用户提供更优质的网页体验。   此文档面向网页开发者介绍微信JS-SDK如何使用及相关注意事项。 JSSDK使用步骤   步骤一:绑定域名   先登录 微信公众平台 进入“公众号设置”的“功能设置”里填写“JS接口安全域名”。   备注:登录后可在“开发者中心”查看对应的接口权限。 步骤二:引入JS文件   在需要调用JS接口的页面引入如下JS文件,(支持https): http://res.wx.qq.com/open/js/jweixin-1.0.0.js   备注:支持使用 AMD/CMD 标准模块加载方法加载 步骤三:通过config接口注入权限验证配置   所有需要使用JS-SDK的页面必须先注入配置信息,否则将无法调用(同一个url仅需调用一次,对于变化url的SPA的web app可在每次url变化时进行调用,目前Android微信客 户端不支持pushState的H5新特性,所以使用pushState来实现web app的页面会导致签名失败,此问题会在Android6.2中修复)。 wx.config({

JS高阶---浏览器内核

眉间皱痕 提交于 2019-12-19 02:17:14
不同浏览器的内核,不太一样 360双核切换机制 一般涉及到金钱交易时,会切换到Trident内核,因为IE内核安全性较稳 不涉及金钱利益时,则会使用webkit内核 (1)内核是由很多模块构成 注意: 定时器模块运行在分线程上,那么是不是说明回调函数在分线程上?? JS代码运行在分线程上??? 答案是: JS运行在主线程上 。 . 来源: https://www.cnblogs.com/jianxian/p/11979892.html

高性能网站建设指南----笔记

随声附和 提交于 2019-12-19 02:00:28
小概述: 1.只有10%-20%的最终用户响应时间花在了下载HTML文档上,其余的80%-90%的时间花在了下载页面中的所有组件上【js,css,image,flash...】。 2.如果浏览器和服务器都支持的话,可以使用压缩来减小响应的大小。浏览器可以使用Accept-Encoding头来声明它支持的压缩,服务器使用Content-Encoding头来确认响应已被压缩。 3.条件GET请求 如果浏览器在其缓存中保留了组件一个副本,但并不确定它是否仍然有效,就会生成一个条件GET请求,即在请求头中使用If-Modified-Since头将最后修改时间发送给服务器,请求服务器验证该副本从最后修改时间以来有没有被更新过,如果 没有更新过,服务器会返回一个"304 Not Modified"状态码并不再发送响应体,浏览器直接使用缓存中的这个副本,从而得到一个更小且更快的响应。 请求: GET /us.js.yimg.com/lib/common/utils/2/yahoo_2.0.0-b2.js HTTP/1.1 Host: us.js2.yimg.com User-Agent: Mozilla/5.0 (...) Gecko/20061206 Firefox/1.5.0.9 Accept-Encoding: gzip,deflate If-Modified-Since: Wed, 22

JS中如何将JSON的字符串解析成JSON数据格式

谁说我不能喝 提交于 2019-12-19 01:45:32
1.使用eval()函数 服务器端返回json形式的字符串 js中使用eval()解析成js对象 为什么这里要写("(+data+)"),因为eval本身的问题。 由于json是以”{}”的方式来开始以及结束的,在JS中,它会被当成一个语句块来处理,所以必须强制性的将它转换成一种表达式。 加上圆括号的目的是迫使eval函数在处理JavaScript代码的时候强制将括号内的表达式(expression)转化为对象,而不是作为语句(statement)来执行。举一个例子,例如对象字面量{}, 如若不加外层的括号,那么eval会将大括号识别为JavaScript代码块的开始和结束标记,那么{}将会被认为是执行了一句空语句。 2.使用function()对象来进行返回解析 来源: https://www.cnblogs.com/freezy/p/7010526.html

js正则,电话,邮箱

吃可爱长大的小学妹 提交于 2019-12-19 01:25:49
1. <script type="text/javascript"> var str="Is this all th05777-89856825ere is50577-456-?"; var model = /\d{4}\-\d{7,8}/g; document.write(str.match(model)); </script> 输出结果 5777-89856825 备注: \d{4} 查找4位数字 \d 数字 \d{7,8} 查找7-8位数字 g 是全局匹配  扩展代码一: var str="Is this all th05888777-89856825ere is5057788-456-?"; var model = /\d{4}\-\d{7,8}/g; var t = str.match(model); var n = false; if(t !=''){ n = true; } document.write(str.match(model)); document.write(n); 输出: 8777-89856825true 完美电话正则  2. 扩展: document.write(patt1.test(str)); document.write(str.match(model)); 来源: https://www.cnblogs.com/wesky/p/3142280