js

js获取url中的参数,url中传递中文的时候通过js解码的方式

冷暖自知 提交于 2020-03-06 06:48:02
如果传递的参数是: <a href="${pageContext.request.contextPath}/productdisplay/productDisplay_productDisplayUI.action?pkId=${pkId}&name=${name}" style="color:white; margin-top:10px; margin-bottom:10px;">${name}</a> 获取url参数的js如下: /** 初始化加载结束 */ function getUrlVars(){ var vars = [], hash; var hashes = window.location.href.slice(window.location.href.indexOf('?')+1).split('&'); for(var i = 0; i < hashes.length; i++) { hash = hashes[i].split('='); vars.push(hash[0]); vars[hash[0]] = hash[1]; } return vars; } 如果url中有中文,则取参数的时候会有中文乱码,得用decodeURI()方法解码,方式如下: //获得所属分类的pkId var params = getUrlVars(); //获得此中分类的id

JS变量函数提升机制

两盒软妹~` 提交于 2020-03-06 04:22:28
看了大佬的博客 JavaScript引擎运行原理解析 ,对其中的代码段产生好奇。 <script> console.log(a); // 打印[Function: a] var a = 1; function a(){console.log(2);} console.log(a); var a = 3; console.log(a); function a(){console.log(4);} console.log(a) </script> ———————————————— 版权声明:本文为CSDN博主「开心大表哥」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。 原文链接:https://blog.csdn.net/a419419/article/details/82906049 从结果脑补JS引擎的机制。。。 JS的函数声明 应该是 函数声明(像C里面的函数声明: [返回值类型] [函数名](参数列表);)+ 函数体。为什么说这个呢,函数不像变量有声明和赋值两步走,我觉得JS里函数就是一体的,没得像先声明个函数名字再定义函数代码的,如果这样,那就不叫函数声明了,直接是函数表达式不好莫。为什么是应该是呢,因为我不知道官方文档在哪。。。 函数声明和变量提升后的顺序:猜测1——函数前变量后;猜测2——变量前函数后;猜测3—

js之var的重要性

人盡茶涼 提交于 2020-03-06 02:18:06
var的重要性 加var是声明变量,其作用域取决于在哪里声明的,不加var这是个赋值,运用作用域规则(一层一层往外找),会污染全局 < ! DOCTYPE html > < html > < head > < title > < / title > < script type = "text/javascript" > window . str = 'union' ; function t1 ( ) { //var str = 'china';//var声明st变量,为t1的局部变量。 function t2 ( ) { //var str = 'japan'; //加var是声明变量,其作用域取决于在哪里声明的 str = 'japan' ; //不加var这是个赋值,运用作用域规则(一层一层往外找),会污染全局 alert ( str ) ; } t2 ( ) ; } t1 ( ) ; alert ( window . str ) ; < / script > < / head > < body > < / body > < / html > 来源: CSDN 作者: bthyla 链接: https://blog.csdn.net/qq_45666248/article/details/104671754

GitHub上整理的一些工具

拥有回忆 提交于 2020-03-06 00:52:13
GitHub上整理的一些工具 GitHub 2015-11-19 10:10:47 发布 您的评价: 0.0 收藏 5收藏 技术站点 Hacker News:非常棒的针对编程的链接聚合网站 Programming reddit:同上 MSDN:微软相关的官方技术集中地,主要是文档类 infoq:企业级应用,关注软件开发领域 OSChina:开源技术社区,开源方面做的不错哦 cnblogs,51cto,csdn:常见的技术社区,各有专长 stackoverflow:IT技术问答网站 GitHub:全球最大的源代码管理平台,很多知名开源项目都在上面,如Linux内核, OpenStack等免费的it电子书: http://it-ebooks.info/ DevStore:开发者服务商店 不错的书籍 人件 人月神话 代码大全2 计算机程序设计艺术 程序员的自我修养 程序员修炼之道 高效能程序员的修炼(成为一名杰出的程序员其实跟写代码没有太大关系) 深入理解计算机系统 软件随想录 算法导论(麻省理工学院出版社) 离线数学及其应用 设计模式 编程之美 黑客与画家 编程珠玑 C++ Prime Effective C++ TCP/IP详解 Unix 编程艺术 《精神分析引论》弗洛伊德 搞定:无压力工作的艺术 平台工具(都是开源的好东东哦) Redmine/Trac:项目管理平台 Jenkins

前端学习(35)~js学习(十二):预编译

醉酒当歌 提交于 2020-03-06 00:01:53
我们在上一篇文章《作用域》中简单讲过“变量提升”,今天来讲一下预编译,这对我们深入理解 变量提升 会有帮助。 JavaScript 运行三部曲 语法分析 预编译 解释执行 预编译前奏 在讲预编译前,我们先来普及下面两个规律。 两个规律 规律1:任何变量,如果未经声明就赋值,此变量是属于 window 的属性 ,而且不会做变量提升。(注意,无论在哪个作用域内赋值) 比如说,如果我们直接在代码里写 console.log(a) ,这肯定会报错的,提示找不到 a 。但如果我直接写 a = 100 ,这就不会报错,此时,这个 a 就是 window.a 。 规律2:一切声明的全局变量,全是window的属性。 (注意,我说的是在全局作用域内声明的全局变量,不是说局部变量) 比如说,当我定义 var a = 200 时,这此时这个 a 就是 window.a 。 由此,我们可以看出: window 代表了全局作用域(是说「代表」,没说「等于」 )。 举例 掌握了上面两句话之后,我们再来看看下面的例子。 function foo() { var a = b = 100; // 连续赋值 } foo(); console.log(window.b); // 在全局范围内访问 b console.log(b); // 在全局范围内访问 b,但是前面没有加 window 这个关键字 console

爱奇艺密码加密js分析

百般思念 提交于 2020-03-05 23:57:21
工具:发条js调试工具: 使用:封装成函数后 问题:通过js找出passwd加密的手段 解决: 1.找出js中加密码代码 通过上图可以发现密码是由e.passwd = r.rsaFun(e.passwd) rsaFun 这个函数实现的,搜索这个函数拷贝出逻辑到js调试工具,封装成函数,如下图: 思考:这个代码中还有两个函数未定义,同上使用search,查找相关函数的复制到调试工具上 改变下函数的调用方式使函数间关联起来,执行格式化和加载代码后,发现有些变量未定义,直接手动定义如a = {} 结果:计算结果等于密码加密后的字符串,计算逻辑正确 来源: CSDN 作者: shixiazhu1989 链接: https://blog.csdn.net/zhushixia1989/article/details/104684210

gulp相关

穿精又带淫゛_ 提交于 2020-03-05 22:37:32
一、简介 gulp是前端开发过程中对代码进行构建的工具,是自动化项目的构建利器; gulp是基于Nodejs的自动任务运行器,她能自动化地完成 javascript/coffee/sass/less/html/image/css 等文件的的测试、检查、合并、压缩、格式化、浏览器自动刷新、部署文件生成,并监听文件在改动后重复指定的这些步骤。在实现上,她借鉴了Unix操作系统的管道(pipe)思想,前一级的输出,直接变成后一级的输入,使得在操作上非常简单。 二、安装   通过 npm 来安装 gulp;(设置镜像源可以通过cnpm安装) 全局安装   在cmd中执行 cnpm i -g gulp 查看是否正确安装:命令提示符执行gulp -v,出现版本号即为正确安装 三、配置信息   1. npm init -y 生成package.json 文件 会自动存储下载的第三方依赖包信息,存储信息如下: { "name": "zhang", "version": "1.0.0", "description": "", "main": "gulpfile.js", "devDependencies": { "@babel/core": "^7.8.7", "@babel/preset-env": "^7.8.7", "del": "^5.1.0", "gulp": "^4.0.2",

js事件委托

﹥>﹥吖頭↗ 提交于 2020-03-05 19:56:02
DOM事件流 : 事件捕获 :当某个元素触发某个事件(如onclick),顶层对象document就会发出一个事件流,随着DOM树的节点向目标元素节点流去,直到到达事件真正发生的目标元素。在这个过程中,事件相应的监听函数是不会被触发的。 目标阶段 :当到达目标元素之后,执行目标元素该事件相应的处理函数。如果没有绑定监听函数,那就不执行。 事件冒泡 :从目标元素开始,往顶层元素传播。途中如果有节点绑定了相应的事件处理函数,这些函数都会被一次触发。 事件委托 如果在需要有多个DOM事件需要监听的情况下,给每一个DOM都绑定监听函数,对性能会有极大的影响,事件委托便应运而生。 事件委托利用了利用冒泡的原理,把本应该添加到某个元素上的事件委托给他的父级,从而减少DOM交互达到网页优化。 例如: 写法1 < body > < ul id = "ul" > < li > 1111 < / li > < li > 2222 < / li > < li > 3333 < / li > < li > 4444 < / li > < / ul > < / body > < script > window . onload = ( ) => { var ul = document . getElementById ( 'ul' ) ; ul . onmouseover = ( e ) => { var

页面加载渲染的优化(一)

允我心安 提交于 2020-03-05 16:28:18
1.HTML本身是通过网址请求回来的,由字节流转换成字符流,浏览器进行词法分析,分析成词法的token,从上到下,不同 >的标签类型会解析成不同的对象,然后加载到DOM树上。 2.HTML中会通过link引入其他资源,这时会并发的请求静态资源,请求回来之后会和CSS资源进行结合,生成渲染树。 3.只有DOM树和CSS树都生成之后才会进行渲染,布局,绘制。 特点 1.顺序执行,并发加载(设3-4个CDN域名去最大化并发加载) 2.是否阻塞 3.依赖关系 4.引入方式 场景: 1.页面出来了,样式没有出来,闪退等,是因为没有遵循好依赖关系,如果CSS放在header中去引入,那么页面就会等待CSS加载完毕生成CSS树之后再渲染,就不会出现闪动。 2.JS的执行顺序,通过JS 的async标签进行异步加载,梳理好依赖关系。 3.方式:JS通过script会有阻塞问题,可以通过defer,async标签更好。 3.是否动态引入?判断是不是在需要的时候再去加载。SPA单页应用应该在路由到某个页面的时候再去加载那个路由的内容,要异步动态的去引入内容。 顺序执行,并发加载 1.词法分析时,token的获取是从下到下顺序执行的 2.并发请求外部资源 3.并发上限:某个域名的限制 CSS阻塞 1.CSS在head中会阻塞页面的渲染,页面需要link标签里面的样式内容才能去渲染,但为了避免闪动

js label语句

我只是一个虾纸丫 提交于 2020-03-05 16:17:45
使用 label 语句可以在代码中添加标签,以便将来使用。以下是 label 语句的语法: label : statement 下面是示例: start : for ( var i = 0 ; i < count ; i ++ ) { alert ( i ) ; } label 标签可以和break continue语句联合使用,例如: var num = 0 ; outermost : for ( var i = 0 ; i < 10 ; i ++ ) { for ( var j = 0 ; j < 10 ; j ++ ) { if ( i == 5 && j == 5 ) { break outermost ; } num ++ ; } } alert ( num ) ; // 55 在这个例子中, outermost 标签表示外部的 for 语句。如果每个循环正常执行 10 次,则 num++语句就会正常执行 100 次。换句话说,如果两个循环都自然结束, num 的值应该是 100。但内部循环中的 break 语句带了一个参数:要返回到的标签。添加这个标签的结果将导致 break 语句不仅会退出内部的 for 语句(即使用变量 j 的循环),而且也会退出外部的 for 语句(即使用变量 i 的循环) 。为此,当变量 i 和 j 都等于 5 时, num 的值正好是 55。