
JavaScript
YUHUI01
总有刁民想害朕
展开
-
js——数组进阶方法
1、includes(),判断一个数组是否包含一个指定的值,第一位是查找的元素值,第二位是开始查找的索引[1, 2, 3].includes(3, -1);// true2、flat(),将一个多维数组拉平,可接受参数,参数表示拉平的维度,参数为Infinity 时,可拉平任意维度数组,该方法可以去除空属性[1, , 2, [3, [4, 5]]].flat(2); // [1,...原创 2020-04-21 14:15:15 · 369 阅读 · 0 评论 -
JavaScript——进制转换以及字符串转换
1、buffer生成的数据为十六进制,遍历之后转化为二进制转,把二进制换成十六进制let bf=new Buffer("hello") console.log(bf);for(let i=0;i<bf.length;i++){ console.log(bf[i].toString(16)); //二进制转化为十六进制}2、把进制转化为字符串类型l...原创 2018-07-07 21:20:38 · 1131 阅读 · 0 评论 -
Javascript——bind()、apply()与call()
bind()、apply()与call()都是用第一个参数改变调用函数的执行上下文,也就是this,apply()与call()的主要区别是两个函数都可以传多个参数,但是call()是一个一个的传进去,apply()把第二个参数之后的参数放进一个数组进行传值,两者与bind()的区别是,bind()返回的是一个函数,需要自己去调用,而call与apply就会直接调用。var xw =...转载 2018-07-13 21:46:12 · 180 阅读 · 0 评论 -
JavaScript——this隐式丢失
隐式丢失就是指隐式绑定的函数丢失绑定对象,从而默认绑定到全局或者undefined(取决于是否使用严格模式)1、为函数调用创建别名function foo(){ console.log(this.a);}var obj={ a:2, foo:foo}var bar=obj.foo;var a="window";bar()//window虽然bar是obj....原创 2018-08-05 12:55:59 · 1831 阅读 · 1 评论 -
JavaScript——遍历map、forEach、filter之间的主要区别
1、forEach()遍历数组,没有返回值var data = ['张三','李四','王五','老王','小明','小芳']var c = data.forEach((value, index, arr)=> { console.log(value, index, arr)})2、map()遍历数组,有返回值,根据回调里的返回值 生成一个新数组var a =...原创 2018-09-03 22:09:56 · 757 阅读 · 0 评论 -
JavaScript——console调试
浏览器调试可以使用alert以及console1、console的基本输出console.log("打印字符串")//在控制台打印自定义字符串console.error("我是个错误");//在控制台打印自定义错误信息console.info("我是个信息");//在控制台打印自定义信息console.warn("我是个警告");//在控制台打印自定义警告信息consol...原创 2018-09-22 19:34:17 · 401 阅读 · 0 评论 -
JavaScript——for…… in……循环性能问题
问题:使用for……in……循环会遍历原型链所有的可枚举属性,如果你的目的不是需要所有属性,会造成不必要的循环const div =document.createElement('div')let m =0for (let k in div){ m++} console.log(m) //235console.log(Object.keys(div).length) ...原创 2018-09-22 22:18:40 · 572 阅读 · 0 评论 -
JavaScript——小坑
1、注意到返回的函数在其定义内部引用了局部变量arr,所以,当一个函数返回了一个函数后,其内部的局部变量还被新函数引用function count() { var arr = []; for (var i=1; i&amp;lt;=3; i++) { arr.push(function () { return i * i; });...原创 2018-10-18 23:55:12 · 274 阅读 · 0 评论 -
javascript——跨域请求的实现
本文所有代码都经过测试(vcCode+nodejs+chrome),请自行安装依赖,如有错误,请指点一二碍于浏览器的同源策略,前端需要获取后端的数据时,需要进行跨域处理,什么情况下需要跨域?假如你的URL为 http://baidu.com/dist/index.html ,http://baidu.com/list/index.html 访问成功 http://bai...原创 2019-03-26 16:58:26 · 936 阅读 · 0 评论 -
javascript——ajax使用以及状态码详解
ajax主要用于异步操作,与服务器或者其他网站进行交互,在不用刷新整个页面的情况下也可以更新数据// 当然,这与服务器请求没有做跨域处理,所以会报错<script> var xhr=new XMLHttpRequest(); // 创建XMLHttpRequest,以进行ajax交互 // 侦听ajax对象的状态码是否改变,并声明ajax回调函数 x...原创 2019-03-24 17:04:04 · 1346 阅读 · 0 评论 -
JavaScript / node.js——全局作用域区别
JavaScript与node.js中都用global代表全局对象,但是在JavaScript中,global不提供对外的访问接口,使用window指向global,也就是说,在JavaScript中,windows是global的表现,如果在JavaScript中直接访问global,会返回undefined。在node中,global表示全局,没有window对象,但是如果使用glob...原创 2018-07-07 09:45:12 · 497 阅读 · 0 评论 -
JavaScript——解决javascript循环后 i 为固定值(循环的最后一项)
如果在循环中添加了等待触发事件(如click()),循环不会在执行过程等待事件触发,而是会直接完成数组的循环,最后的循环项 i 值会成为数组的长度for(var i=0;i&amp;lt;tagN.length;i++){ tagN[i].onclick=function(){ console.log(i) //输出 i 的最大值6 }}如果希望可以在点击事...原创 2018-06-26 14:13:38 · 983 阅读 · 0 评论 -
JavaScript/ES6——区块中的 var与 let
1、JavaScript单独使用 { } 把语句放在一起,成为区块,对于var 来说,在区块内声明变量,不会构成单独的作用域,也就是在 { }外还可以访问到该变量,与在 { } 外访问 a 一样{ var a=100;}console.log(a) //100//100但是如果使用 let 在 { } 中定义变量,则受作用域影响,因为let定义的变量只生存在该作用域中...原创 2018-07-08 17:18:51 · 245 阅读 · 0 评论 -
JavaScript——switch语句
switch语句中的表达式在与case比较时,使用的是严格等于运算符(===),而不是相等运算符(==),所以不会发生类型转换var a = 1;switch (a){ case true : console.log("发生类型转换!"); break; default: console.log("没有发生类型转换!")}//输出...原创 2018-07-08 18:59:31 · 786 阅读 · 0 评论 -
JavaScript——小技巧/骚东西
1、通过递归来求阶乘function factorial(n) { return (n > 1) ? n * f(n - 1) : n}2、交换值1. var temp = a; a = b; b = temp; (传统,但需要借助临时变量)2. a ^= b; b ^= a; a ^= b; (需要两个整数)3. b = [a, a = b][0] (借助数组)4...转载 2018-07-09 20:59:44 · 201 阅读 · 0 评论 -
JavaScript——获取对象宽高等属性的方法及区别
在JS中可以用style.width以及offsetWidth获取对象的宽度,但是有所不同1、style.width只能获取对象的行间样式(嵌入式样式表),offsetWidth不仅能获取对象的行间样式表,还可以获取内联、外联样式表中的样式。2、style.width获取的仅仅是对象的width,不包含padding、border等,并且返回带px的宽度值(string),比如“200px”,of...转载 2018-06-27 23:52:07 · 409 阅读 · 0 评论 -
你不知道的JavaScript——上卷——作用域
编译的原理步骤1、分词/词法分析 这个过程会把由字符组成的字符串分解成有意义的代码块(也叫词法单元),如var a=2;会被分解成var、a、=、2、;。空格如果没有意义,就不会被当作词法单元解析出来。2、解析/词法分析 将词法单元流(数组)转换成一个由元素逐级嵌套所组成的代表程序语法结构的树(抽象语法树,AST)。3、生成代码 这是一个将AST转换成可执...原创 2018-06-28 13:08:20 · 300 阅读 · 0 评论 -
JavaScript——将以GET传输的URL中的信息转化成JSON
function test(href){ var params = href.split("?")[1]; var paramArr = params.split('&'); var res = {}; for(var i = 0;i<paramArr.length;i++){ var str = paramArr[i].split(...原创 2018-07-10 18:15:57 · 1503 阅读 · 0 评论 -
JavaScript——作用域
在JavaScript中有函数作用域、全局作用域以及块作用域1、函数作用域:该作用域中的变量只生存在函数代码块中,但是如果使用隐式声明变量,该变量会成为全局变量,作用域为全局作用域(查看文章中的LHS查询机制就可以明白为什么会变成全局作用域)2、全局作用域:在代码中隐式声明的变量都会成为全局变量(非严格模式下),可以用window.变量来获取该全局变量3、块作用域:有人认为JS中没有块作用域(因为...原创 2018-07-11 21:47:41 · 181 阅读 · 0 评论 -
JavaScript——实现二叉树中序遍历、前序遍历、后序遍历
<!doctype html><html lang="zh"><head> <meta charset="utf-8"/> <meta http-equiv="X-UA-Compation" content="ie=edge"/> <meta name="v原创 2018-06-29 13:06:52 · 721 阅读 · 0 评论