学习
文章平均质量分 85
迷人的律二
边学边写博客,更加提高效率,还可以达到分享的收益。
岂不美哉!
展开
-
简述位运算符
简谈位运算符前言:读者需要对源码,补码有一定了解,在此不过多讲解一、& 按位与运算符int foo = 10 & 7;printf("%d", foo); // 2规则:将左右两边的表达式每一位进行逻辑与,如果是负数,先转换为正数的补码,进行逻辑与二、|按位或运算符int bar = 10 | 15printf("%d", bar); // 15将左右两边的表达式每一位进行逻辑或,如果是负数,先转为负数的补码,进行逻辑或上面这两个运算符,只需单独将它们的二进制位,原创 2021-04-14 17:18:59 · 245 阅读 · 0 评论 -
ES6中字符串的新增方法(一)
字符串实例的 includes(), startWith(), endsWith()传统上,JavaScript只有indexof方法,可以返回一个字符串是否包含在另一个字符串中,ES6有提供了三个方法includes() 返回布尔值,表示是否找到参数字符串startsWith() 返回布尔值,表示参数字符串是否在源字符串头部endsWith() 返回布尔值,表示参数字符串是否在源字符串尾部 let str = 'hello world' str.includes('w'原创 2020-05-29 21:31:11 · 302 阅读 · 0 评论 -
ES6中对象的新增方法(三)
Object.keys(), Object.values(), Object.entries()Object.keys()返回一个数组,成员参数是对象自身(不含继承)所有可枚举的(enumable)属性的键名 let obj = { car : 'BMW', wife : 'fanfan' } Object.keys(obj) // ['car', 'wife']可以使用for…of循环遍历它 let {keys} = Object; let obj = { car :原创 2020-05-29 19:07:47 · 364 阅读 · 0 评论 -
ES6中对象的新增方法(二)
Object.getOwnPropertyDescriptors()ES5中Object.getOwnPropertyDescriptor 返回对象中某个属性的详细描述对象,ES6引入Object.getOwnPropertyDescriptors 返回对象中所有属性(非继承)的详细描述对象 let obj = { foo : '123', get bar () { return 'abc' } } Object.getOwnPropertyDescriptors(obj) /原创 2020-05-29 11:21:42 · 198 阅读 · 0 评论 -
ES6中对象的新增方法(一)
Object.is()ES5中要比较两个值是否相等,只有两种运算符(== 或 ===)前者会自动转换数据类型,后者的NaN不等自身,以及+0 和 -0相等ES6提出同值相等算法, 用来解决这两个问题。Object.is就是部署这个算法的新方法,它用来比较两个值否严格相等,与严格运算符(===)的行为基本一致 Object.is('foo', 'foo') // true Object.is(NaN, NaN) // true不同之处有两个,一个是 +0 不等于 -0 NaN等于自身原创 2020-05-28 21:26:14 · 492 阅读 · 0 评论 -
ES6中对象的扩展(三)
链判断运算符在日常中,判断是一个对象属性是否存在,有以下写法 let message = (message && message.head && message.head.style && message.head.style.div) || 'null'三元运算符判断 let div = document.querySelector('div'); let box = div ? div.textContent : unde原创 2020-05-28 11:33:15 · 215 阅读 · 1 评论 -
ES中对象的扩展(二)
属性的可枚举性可枚举性对象的每个属性都有一个描述对象(Desciprtor),用来控制该属性的行为。Object.getOwnPropertyDescriptor 方法可以获取该属性的描述对象 let obj = {foo: 'foo'} Object.getOwnPropertyDescriptor(obj, 'foo') /* { value: 'foo', writable: true, enumerable: true, configurable: true原创 2020-05-28 10:31:01 · 182 阅读 · 0 评论 -
ES6中对象的扩展(一)
属性ES6中属性的表达方式更加简洁 let verson = 1.0; let obj = {verson}; obj // {verson : 1.0} // 等同于 let obj = {verson : verson}上面代码中,变量verson直接放在大括号中,属性名就是变量名,属性值就是变量值 function foo (x, y) { return {x, y} } function bar (x, y) { return {x: x, y: y} }原创 2020-05-27 18:34:55 · 185 阅读 · 0 评论 -
ES6中数组的扩展(三)
数组实例的entries(), keys(), values()ES6新增了三个数组的方法, entries, keys, values, 他们用于遍历数组,它们都返回一个遍历器对象可以使用for。of循环遍历entries返回键值对keys返回键values返回值 for (let [index, value] of [1, 6].entries()) { return [index, value] } // 0 : 1 // 1 : 2 for (let index of [2原创 2020-05-27 15:14:34 · 160 阅读 · 0 评论 -
ES6中数组的扩展(二)
Array.ofArray.of方法用于将一组值,转换为数组 Array.of(1, 4, 6); // [1, 4, 6] Array.of(3); // [3] Array.of(3).length; // 1此方法主要弥补Array() 方法的不足,参数个数的不同,会导致Array() 返回的结果也不同 Array() // [] Array(3) // [undefined, undefined, undefined,] Array(1, 4, 6) // [1, 4, 6]原创 2020-05-26 20:37:12 · 107 阅读 · 0 评论 -
ES6中数组的扩展(一)
扩展运算符扩展运算符是(…),它好比rest参数的逆运算,将一个数组转为用逗号分隔的参数序列 console.log(...[1, 2, 3]); // 1, 2, 3 console.log(...1, [2, 3, 4], 5); // 1, 2, 3, 4, 5 [...document.querySelectorAll('div')]; // [<div>, <div>, <div>]函数调用中使用扩展运算符 let arr = [10]原创 2020-05-26 15:06:25 · 101 阅读 · 0 评论 -
函数的尾调用及优化,尾递归及优化
尾调用一个函数最后一步是调用另一个函数,即尾调用 function foo() { return bar() }以下三种情况不属于尾调用 function bar (x) { let y = g(x); return y } function bar (x) { return g(x) + 1; } function bar (x) { g(x) }第一种是调用完还有赋值操作,第二种也是调用完还在操作,即使是同一行第三种等于下面这样的写法 functi原创 2020-05-23 12:25:24 · 332 阅读 · 0 评论 -
Es6中函数的扩展(二)
rest参数ES6引入rest参数(形式为…变量名),用于获取函数的多余参数,这样就可以省略arguments对象了,rest参数搭配的变量是一个数组,该变量将多余的参数放入数组中 function add (...values) { let sum - 0; for (let val of values) { sum += val } return sum } add(1, 3, 5, 7) // 16上面代码,add可以传入任意个数参数进行求和..原创 2020-05-23 09:27:11 · 178 阅读 · 0 评论 -
Es6中Number的扩展
八进制与二进制在es5中,严格模式下,不再允许0o 0O (八进制)或者 0b 0B(二进制)这种表示八进制或二进制的写法。es6在此对此功能进行了完善 0b111110111 === 503 0o767 === 503es5开始,严格模式中,不再允许这样表示,但es6此改善了 // 非严格模式 (function(){ console.log(0o11 === 011); })() // true // 严格模式 (function(){ 'use stri..原创 2020-05-20 22:09:38 · 379 阅读 · 1 评论 -
es6对正则的扩展
前言: 请你熟悉基本的正则表达式之后再来看此文章首先回一下正则的定义方法正则的定义 let regExp = new RegExp('xyz', 'i'); // 等价于 let regExp = /xyz/i; 如上,创建了一个正则构造函数,第一个参数是匹配的字符串,第二个参数为修饰符还有一种是参数可以直接是正则表达式 let regExp = new RegExp(/xyz/i); // 等价于 let regExp = /xyz/i;但是,这样写了之后,你的参数在es原创 2020-05-20 12:34:56 · 162 阅读 · 0 评论 -
带你了解es6字符串的扩展
字符串的遍历es6中字符串可以在for…of循环中进行遍历,因为字符串内部使用了Iterator遍历器 for (let str of 'string') { console.log(str) } // s // t // r // i // n // gJSON.stringify()根据标准,JSON使用utf-8的编码,但JSON.stringify()有可能会返回不符合utf-8的数据JSON.stringify()的问题在于,他可能返0XD800-0xDF..原创 2020-05-17 20:06:06 · 102 阅读 · 0 评论 -
带你深入了解es6中的解构赋值
解构赋值什么是解构赋值顾名思义,解构赋值就是将集合中的值提取出来,再对变量进行赋值,其实就是返回的一个遍历器对象(Iterator),如果赋值右边不是可遍历的结构就会报错数组的解构let foo = 1;let bar = 2;let test = 3;// 以前的赋值方式let [foo, bar, test] = [1, 2, 3]// 用了数组结构之后数组的解构赋值...原创 2020-05-16 14:04:15 · 222 阅读 · 0 评论 -
深入了解webpack4基本配置及优化
1.初识webpackWebpack简介webpack是什么*Webpack是一种前端资源构建工具,一个静态模块打包器(module bundler)。 在Webpack看来,前端的所有资源文件(js/ css/ sass/ less/ img/ ,,,)都会作为模块处理 它将格局模块的依赖关系进行静态分析,打包生成对应的静态资源(bundle)。*webpack能干什么代码转换...原创 2020-04-12 14:06:08 · 1124 阅读 · 0 评论 -
Bootstrap栅格布局&分析grid源码
前言此为本人自学经验和某站博主经验,如有侵权请联系。布局首选布局前,大家要明白bootstrap几种布局方式栅格&flex这篇文章先讲解栅格,flex以后介绍栅格布局我们来看一个最简单的栅格布局建议大家在学bootstrap时候用webstrom编辑器,它可以轻松提示css补全,当然别的编辑器可以安装插件,只是个人建议这几行代码做了什么定义了一...原创 2020-03-31 20:13:57 · 650 阅读 · 0 评论 -
初识Bootstrap
初探Bootstrap前言此为本人自学经验和某站博主经验,如有侵权请联系。初识bootstrap什么是bootstrap为什么要用bootstrapbootstrap最重要的是什么bootstrap给我们带来了哪些便利bootstrap对比其他UI框架bootstrap发展前景什么是bootstrapBootstrap 是最受欢迎的 HTML、CSS 和 JS 框架,...原创 2020-03-30 21:41:04 · 223 阅读 · 0 评论