javaScript基础
文章平均质量分 67
火腿肠烧烤大赛冠军
F=-F
展开
-
JS中的定型数组与视图
定型数组了解定型数组前先复习一下基础知识:1byte(又称为字节) = 8bit(又称为比特、位)1kb = 1024byte;前言之所以要使用定型数组主要是因为WebGL的需求 因此在ES6中引入定型数组来解决这个问题,并提供更高性能的算术运算。所谓定型数组,就是将任何数字转换为一个包含数字比特的数组,随后就可以通过我们熟悉的JS数组方法来进一步处理用人话说就是 js存储数字是以64位浮点格式存储,而一个字节仅需要8位 所以浪费太多了 新弄出来一个数据类型叫定型数组 这个数组可以存储数据原创 2022-05-17 19:25:33 · 466 阅读 · 0 评论 -
javaScript-模块化开发
开发一个模块管理引擎注意,模块仅在开始时定义一次后续所有的使用都是使用最初实例化的模块(这也正是我们所需要的) let module = (function () { const moduleList = {}; function define(name, modules, action) { modules.map((m, i) => { modules[i] = moduleList[m]; }); moduleList[原创 2021-07-11 22:16:52 · 185 阅读 · 2 评论 -
javaScript-你不知道的类
类语法的定义基础就是对原型的操作声明和java差不多 class User { constructor(name) { this.name = name; } getName() { return this.name; } } let hd = new User("123"); console.log(hd.getName());类的内部工作机制就是原型操作类就是构造函数的语法糖实质为操作prototype而已对象属性的声原创 2021-07-06 21:08:41 · 216 阅读 · 4 评论 -
javaScript-原型链
什么是原型你没车,你爸有车,你借着开就是原型有些对象可以没有原型(Object.create(null,{}))如上创建的方法都没有据说Vue中创建对象都是这么创建的原型链调用方式a.__ proto __(当函数当作对象调用时):自己用的b.prototype(函数实例化出来之后自动给新创建对象指定原型):用来给别人的只有函数有简而言之,第一个是自己本身的,第二个是当他作为构造函数时候用的向军大叔的图:这里很重要所以自己跑一下demo let ABC = function原创 2021-07-01 22:11:15 · 320 阅读 · 1 评论 -
javaScript-对象
面向对象编程 let user = { name: "小孙吗", grade: [ { name: "js", score: 99 }, { name: "docker", score: 76 } ], average() { let total = this.grade.reduce((t, l) => t + l.score, 0); return `${this.name}的平均成绩是: ${total / th原创 2021-06-19 22:49:18 · 186 阅读 · 1 评论 -
javaScript-宏任务与微任务/事件轮询
宏任务与微任务javaScript是单线程语言(如果多线程dom会疯掉)所以在同一时间只能执行一个任务,称为主线程,用来执行同步任务同时还有两个任务列表用于存放异步任务,宏任务、微任务执行顺序为:主线程=>微任务=>宏任务有关定时器定时器模块⏲,到达时间点将其放入宏任务队列如果主线程没有任务则执行,如果有则等待执行完成后再继续执行如果有两个相同时间的定时器则上面的先执行下面的后执行如果两个时间不同的定时器则时间短的先执行时间长的后执行注意点:定时器的⏲是在定时器模原创 2021-06-14 21:45:21 · 5829 阅读 · 13 评论 -
javaScript-闭包与作用域
环境与作用域全局环境不会被回收任何位置都可以访问全局环境函数的作用域和环境函数执行后会每一次都会创建一块新的作用域父级函数可以访问子函数作用域延伸函数环境生命周期只要有人在用,环境就不会被清空,所以可以采用复制的方式 function sam() { let n = 1; return function sum(){ console.log(++n); }; // sum(); }; let sss原创 2021-06-13 17:15:48 · 175 阅读 · 3 评论 -
javaScript-函数
全局函数函数直接声明/用var声明会放到全局作用域中let声明不会放全局作用域中建议不要直接使用函数,将函数放在类/模块中再进行使用函数也可以提升(但仅限于匿名函数)立即执行函数与函数作用域冲突(function(参数){})(参数)—可以解决命名冲突问题{}也可以解决要记得函数默认值使用技巧函数一般可以接受任何参数,也可以作为参数arguments是函数接收的所有参数集合之前解析参数function(){[…arguments]}现在解析参数function(…a原创 2021-06-08 22:30:00 · 127 阅读 · 0 评论 -
javaScript-Map/weakMap
什么是mapmap就是可以将函数、数字、对象作为对象的键值存储的数据结构let nap = new Map(function(){},‘1234’);let nap = new Map();nap.set(function(){},‘1234’);突然发现这样的链式操作很好可以对类似的函数进行封装,如果需要调用即可map的一些方法创建:let map = new Map();删除:map.delete();彻底删除:map.clear();检索:map.has();遍历:原创 2021-06-05 22:06:10 · 188 阅读 · 1 评论 -
javaScript - Set/WeakSet
什么是set与数组类似,但是其中不可以存放相同的值 // let arr = [1, 1, 1, 1, 1, 1]; // console.table(arr); // let set = new Set([1, 2, 3, 4, 5]); // set.add(1); // set.add("1"); // console.log(set);//1与对象区别对象数字、字符串都被视为一个,无法重复set中严格校验可以相同set的创建let原创 2021-06-05 17:08:24 · 99 阅读 · 0 评论 -
javaScript基础-Symbol 类型
symbol的基本使用定义方法:二者区别:第二种会在内存中记住(我理解是当再次声明时 相当于把地址给了新变量)第二种是在全局范围内定义symbol可以通过Symbol.keyFor()查询到 let sss= Symbol("hello"); let sssa= Symbol.for("dddd");symbol不会相等 // let sss= Symbol("a"); // let edu = Symbol("a"); // consol原创 2021-06-05 15:28:56 · 201 阅读 · 0 评论 -
JavaScript 值类型使用
typeoftypeof无论后面跟对象还是数组其结果均为object识别方法:construtorinstanceof(原型链方法)toString+call截图如下:字符串转译符号let sam = ‘ni hao’ shanghai’;let sam = ‘ni hao \ shanghai’;let sam = ‘ni hao\t shanghai’;字符串的连接let a = a;let b = b;let c = ${a}+${b};模板字面量嵌套使原创 2021-06-03 22:38:16 · 102 阅读 · 1 评论 -
javascript-你不知道的数组
1. 用console.table来打印数组看的更清楚2. cosnt声明数组/对象(引用类型)的改变机制引用类型是将一个地址存在于变量中,而const无法改变的是当前变量所对应的内容,所以:const arr = [1,2,3];=>arr = [1,2]; //可以改变=>arr = []; //不可以改变3. array.of创建数组array.of创建的数组 let a = new Array(6); // [6] console.log(a.原创 2021-05-31 22:32:52 · 181 阅读 · 1 评论 -
javaScript运算符与流程控制
短路运算符let sex = prompt(“请输入必须”)|| ‘保密’;第一个值成立则不考虑第二个值循环中的label标签例如sun:for(let i=0;i<100;i++){if(i%2==0)countinue sun}代码在continue之后会直接跳转到sun的位置使用:这样写就不单单推出本次循环会直接退出到最外层...原创 2021-05-26 20:58:44 · 113 阅读 · 0 评论 -
javaScript你不知道的闲杂知识
页面端的js避免延迟有些需要很久的js引入时,尽量放在下面(有可能因为加载这个文件导致渲染延迟)前端访问的基本流程注释与执行符///**/;尽量加上 或者下载一个插件变量解析过程以及变量提升js代码执行之前会预先将代码预解析一遍 var web = "hdcms";包含两个过程 var web; web = "hdcms";在浏览器执行之前会预先加载第一步(无论程序将是否执行)例如:if(false){var sam =原创 2021-05-25 21:13:16 · 182 阅读 · 3 评论