- 博客(46)
- 收藏
- 关注
原创 【iOS开发--Swift语法】gard 的具体使用
顾名思义,guard是作为保卫作用而存在的,是 swift 2.0推出的新的判断语句的用法。guard语句和if语句类似,都是根据关键字之后的表达式的布尔值决定下一步执行什么。
2022-09-13 19:15:29
1362
原创 【iOS开发--Swift语法】闭包学习记录
闭包(Closure)是词法闭包(Lexical Closure)的简称,是引用了自由变量的函数。这个被引用的自由变量将和这个函数一同存在,即使已经离开了创造它的环境也不例外。
2022-08-14 14:55:47
1038
原创 【Vue源码】Vue3 reactive 理解
???? 学习记录 未完成在前辈的建议下先去看了这部分,不算是深入理解,第一次看Vue的源码,很多语句看不明白就略过了,只能是勉勉强强手写一个简单的实现。1.学习Vue3时知道Vue2和Vue3的一大区别在于使用Proxy代替defineproperty。2.前段时间看了 ES6的Proxy和Reflect,刚好可以帮助自己消化这部分内容。3.另外最近学了ts,源码中的语法也可以帮助自己巩固这部分内容。一开始上手看源码,简直是天书一样的存在,头大。就开始从易到难的盘,然后再返回去看源码。
2022-02-08 17:15:03
551
原创 【ES6】关于Proxy和Reflect
好久没有写博客啦,两个月干嘛了呢。琢磨了一下手撕promise,没琢磨通,通了的也快忘记了。实习啦啦啦啦~学到了好多,查漏补缺。最近可以自己看看Proxy和Reflect。有空了捋捋,写写自己的理解。先占个坑。...
2022-01-26 11:24:22
823
原创 【JS基础整理—No.08】原型--原型链--原型继承
关于原型的概念,一开始的接触js的时候完全不知所云,一堆专业名词的解释,箭头指来指去越看越晕。当时我只知道这个东西很重要很重要,然后就是好难好难。但是不要担心,其实很简单的!相信我!现在绕不明白只是因为它对于你来说是一个完全陌生的概念,而且缺少实际的用用场景。只要我们一直在学习,时间会帮我们解决一切问题的。
2021-12-08 21:12:23
660
原创 【面试题集—No.13】柯里化面试题(参数确定)
题目:实现一个函数功能:sum(1,2,3,4…n)转化为 sum(1)(2)(3)(4)…(n)代码实现:function curry(fn, ...args) { return (...arr) => { let result = [...args, ...arr] if (result.length === fn.length) { return fn(...result) } else {
2021-11-23 22:08:57
487
原创 【面试题集—No.12】柯里化面试题(参数不确定)
实现一个add方法,使计算结果能够满足如下预期:add(1)(2)(3) = 6;add(1, 2, 3)(4) = 10;add(1)(2)(3)(4)(5) = 15;
2021-11-23 11:29:51
1044
2
原创 【JS基础整理—No.07】函数柯里化
柯里化的官方解释:把接受多个参数的函数变换成接受一个单一参数(最初函数的第一个参数)的函数,并且返回接受余下的参数而且返回结果的新函数。
2021-11-22 21:21:10
1214
1
原创 【CSS基础—No.03】消除display: inline-block产生的间隙
如果你举例子尝试的话会发现一个问题,display: inline-block元素垂直和水平方向也会产生一个间隙,而这个间隙在实际开发中会让我们的页面不那么严谨。
2021-11-21 19:55:56
1334
2
原创 【CSS基础—No.01】块级格式化上下文BFC
谈谈BFC吧,最近面试经常问,这点内容感觉自己答得总是不那么顺畅。一、定义:块级格式化上下文,可以理解为一个容器,这个容器内的物品不会被其他容器影响,也不会影响其他容器。如果一个元素符合触发BFC的条件,则BFC中的元素布局不受外部影响。二、触发条件: 根元素:body; 元素设置浮动:float 除 none 以外的值; 元素设置绝对定位:position (absolute、fixed); display 值为:inline-block、table-c
2021-11-20 23:51:03
364
原创 【面试题集—No.11】如何复制一个数组
写在前面:面试问到的话,需要尽可能多的把你在可以想到的方法答出来。在平时的算法练习中,拷贝数组是其中一个出现很频繁并且很重要的一步。这一章很轻松的~ 另外复习完这一部分,我接下来去整理一下常见的数组的API。首先,大家一定知道!但我在啰嗦一句,显得我这个 菜方方面面!var arr=["teery","larry","tom","jacky"];var arr1=arr; //不是克隆arr1==arr //true,指向同一个对象另外,这里是简单的针对数组的浅拷贝,关于拷..
2021-11-19 23:14:41
172
原创 【面试题集—No.10】 闭包面试题
写在前面:在学习了闭包之后,试着做做这些题。其实是一种很棒地检验自己学习成果的手段。我当时反反复复,学了但好像又没完全学,遇到题还是一头雾水,到现在可以捋得很清楚也经历了蛮久的。而且从this,执行上下文,作用域一直走过来,这些题目涉及的内容也相对全面,加油喽。
2021-11-19 22:04:04
765
原创 【JS基础整理—No.06】闭包
写在前面:我试图用执行上下文和作用域这些底层原理来对闭包这个概念进行理解,所以我先复习了,执行上下文,又搞清楚了作用域是怎么一回事,最后再回来解释一波闭包。其实闭包这个概念,在刚开始学习前端随便翻面经的时候我就见过它,三个月前也认真地学习过,做了好些代码阅读题,知道了它是“内部函数引用外部函数的变量使常驻内存”,但其实也只是停留在概念上。后来慢慢地这个地方用到了闭包,那个原来也有闭包,对他的理解不是浮在表面,再到现在去想要理解它的底层实现原理。好像一直在学习又好像什么新的内容都没有
2021-11-19 15:32:11
615
原创 【JS基础整理—No.05】执行上下文和作用域区别
????【JS基础整理—No.03】执行上下文_Chailo的博客-优快云博客????【JS基础整理—No.04】作用域_Chailo的博客-优快云博客区别: 除全局作用域,每个函数有自己的作用域,在函数定义时确定。(只有一个) 全局执行上下文环境是在全局作用域确定之后,js代码马上执行之前创建; 函数执行上下文环境是在调用函数时,函数代码执行之前创建的。(有多个) 作用域是静态的,函数定义时确定好就一直存在且不变; 上下文环境是动态的,调用函数时创建,结束时释放。 联系:
2021-11-16 19:59:16
314
原创 【JS基础整理—No.04】作用域
写在前面:执行上下文创建阶段,其中一个过程是,创建作用域,接下来就简单谈谈我对作用域的理解。目录一、基本概念二、词法作用域三、块级作用域???? 最后整理的面试题一、基本概念定义:程序中定义变量的区域,它决定了当前执行代码对变量的访问权限。产生:代码定义的时候作用域链:当前作用域没有到上层作用域查找作用域包括:全局作用域,局部作用域(即,函数作用域,块级作用域) ❗没有对象作用域//注意和闭包区分????function fun(){ var n
2021-11-16 19:54:30
412
原创 【JS基础整理—No.03】执行上下文
写在前面:对于初学者,全局执行上下文,全局作用域,函数执行上下文,函数作用域,这几个很容易混。关于执行上下文|作用域|闭包|变量提升|块级作用域这些内容有着很强的关联性,所以我把它们放在一起来复习整理。但一时间有不知该从哪里入手去解释,最近翻看了一些前辈的文章有了大概的思路。思维导图:先把涉及的所有知识点罗列出来,再根据知识点的范围与联系进行分类,梳理出一张思维导图,最后对细节内容分篇整理总结。可以根据目录单独食用接下来我会从执行上下文开始,理解执行上下文和执行栈
2021-11-16 15:24:50
454
原创 【面试题集—No.09】关于函数this的面试题
???? 面试题基础版// ???? 面试题1var a=1;function test(){ var a=2; function bar(){ var a=3; console.log(this.a); //global Undefined } bar();}test(); //Undefined 应该是1吧// 疑问❓:浏览器运行是1,node运行时undefined// ∵this的取值跟调用方式有关,bar()的调用方式,函数名前没'.',指向全局变量。//
2021-11-16 14:45:06
428
原创 【JS基础整理—No.02】函数
是对象,是一个引用数据类型1.函数的本质首先我们知道函数是引用类型数据,使用函数是为了提高代码的复用性从本质上讲,函数是一种特殊对象(数组也是一种特殊的对象),函数内部数据私有。????这部分关于原型的问题先不细说,总之理解函数的本质是对象即可。prototype:每个函数都有一个prototype属性,默认指向一个空对象(原型对象)给原型对象添加属性(一般添加方法)作用:函数的所有实例对象自动拥有原型中的属性(方法)__proto__: 每个实例对象都有一个__proto__
2021-11-16 14:41:57
795
原创 【面试题集—No.08】过滤树的问题-深信服2021秋招
题目:过滤掉一个树形结构中不含给定的 filtername 的结点eg例子????:[{name: 'A', children: [ {name: 'B'} ]},{name: 'C'}] 以 filtername='B' 过滤后则成为 [{name: 'A', children: [ {name: 'B'} ]}]原理://原理:function fn(a){ if(a>3) return console.log(a); b=a+1; fn(b);
2021-11-15 22:04:52
455
原创 【2021-11-14记】 聊点别的
???????? 废话:经过一个阶段的系统学习,现在返回来复习一些之前的内容,会发现之前吭哧吭哧费力气学的东西其实蛮简单的。我发现,不论是什么,只要最后学懂了理解了,自己都会得出一个其实这部分内容也没有那么难的结论。所以,稳稳地沉下心去学就好了,只要花费足够的耐性和时间所有问题都会迎刃而解,因为目前这个阶段所遇到的困难从来都不是什么世纪难题呀!????????【这个黑脸公主我好爱】我觉得它不是废话:知识的掌握越全面,越会发现它们之间有着很强的关联性。再刚接触时,都是零零碎碎的去学习,一个个的专业名词都属
2021-11-14 22:57:56
314
原创 【面试题集—No.07】求数字数组中出现次数最多的数字
实现步骤:利用对象进行数组去重,并统计每个数字出现的次数; 比较返回出现次数最多的数字function fn(arr) { // 利用对象属性存在,对数组去重并统计每个数字出现的次数 let obj = {}; arr.forEach(e => { if (!obj[e]) { obj[e] = 1; } else { obj[e] = obj[e] + 1; }
2021-11-14 21:37:56
470
原创 【面试题集—No.06】js实现斐波那契数列
斐波那契数列:从第3项开始,每一项都等于前两项之和。例子????:1, 1, 2, 3, 5, 8, 13, 21, 34,55, 89, 144, 233,377,610,987,1597,2584,4181,6765,10946,17711,28657,46368......1.递归法//递归法(时间复杂度O(n²))function fibonacci(n){ return n>2?fibonacci(n-1)+fibonacci(n-2):1;}2.优化版/
2021-11-14 21:23:49
481
原创 【手写代码】call,apply,bind 的区别和实现原理
目录一、call,apply,bind 区别作用:区别:应用场景:二、手写 call,apply,bind1.手写 call 函数2.手写 apply 函数3.手写 bind 函数简陋版完整版终极版一、call,apply,bind 区别作用:强制绑定this的指向问:为什么要强制绑定this的指向?答:使用call()或apply()可以让任意对象调用任意函数,等同于将函数作为了对象的属性,然后我们就可以通过对象.属性的方式调用函数。
2021-11-14 20:41:33
4441
原创 【css情景题】图片大小超过div盒子&一行文字居中,多行文字左对齐
还有好多好多问题没有解决,先这么着水一篇顾不上整理。主要怕哪天文档丢了,就先放这里,方便之后复盘。【css情景题--01】图片大小超过div盒子根据实际使用场景确定使用哪种1.使用width设置图片的宽,会将图片等比例缩放。之后在使用水平垂直居中属性设置图片的位置2.把图片作为背景图片导入,通过background-position来设置图片的位置(截取图片中需要的位置)关于图片大小超过div盒子的讨论—background的相关属性及使用3.让图片保持原比例,占满整个盒子 给图片设
2021-11-13 22:10:43
1181
原创 【面试题集—No.05】比较两个对象是否相同
先来复习一下关于对象属性遍历的API1.hasOwnProperty() 判断是否是对象自身属性2. Object.getOwnPropertyNames() 获取对象的可枚举和不可枚举属性3. Object.getOwnPropertySymbols() 获取对象的symbol属性4. Object.keys() 获取对象的可枚举属性5. for...in 获取对象自身和继承的可枚举属性(配合hasOwnProperty()使用)6. for...of 获取对象自身可...
2021-11-11 15:09:40
651
原创 【手写代码】new 操作符
作用:创建一个用户定义的实例对象或具有构造函数的内置对象的实例实现步骤:(1)创建了一个空对象(2)设置原型,将对象的__ proto__属性指向构造函数的prototype属性(3)让函数的 this 指向这个对象,执行构造函数的代码(为这个新对象添加属性)(4)判断函数的返回值类型,如果是值类型,返回创建的对象。如果是引用类型,就返回这个引用类型的对象。手写代码:function objectFactory() { // 准备:从参数列表中获取构造函数 ...
2021-11-09 15:00:19
756
原创 【手写代码】instanceof 运算符
作用:用于判断构造函数的 prototype 属性是否出现在对象的原型链中实现步骤:1.获取对象的原型对象(隐式)2.获取构造函数的原型对象(显式)3. 判断构造函数的原型对象是否在对象的原型链上手写代码://关键点;① 3个步骤,② getPrototype()function myInstanceof(left,right){ // 1.获取对象的原型对象(隐式) let proto = Object.getPrototypeOf(left) ..
2021-11-09 12:03:08
116
原创 【手写代码】Object.create() 原理及实现
作用:创建一个新对象,使用现有的对象作为新创建的对象的隐式原型对象 __ proto__let people = { myName: 'chailo', age: 12, sex: 'female'}let me = Object.create(people)for(key in me){ console.log(key+':'+me[key])}// 输出:// myName:chailo// age:12// sex:female实现原理:...
2021-11-09 11:43:58
864
原创 【面试题集—No.04】for...in和for...of的区别
????写在前面:之前在????获取对象属性的个数一篇提到了几个常用的Object的API,这里区别一下for...in和for...of,迷迷瞪瞪的,我经常给搞混。1.for...in 遍历 key(原理:Object.keys());for...of 遍历value2.for...in 获取自身和继承的可枚举属性(配合hasOwnProperty(),判断是否是自身属性) ;for...of 获取自身可迭代属性的值3.for...in用来遍历对象,不建议遍历数组(∵输出的顺序是不固定的);
2021-11-07 17:39:51
310
原创 【面试题集—No.03】获取对象属性的个数
在解决这个问题之前,我们需要知道对象的属性分为:自身属性和继承属性;可枚举属性和不可枚举属性;以symbol为属性值的属性。使用不同的API获得的属性不同。与对象属性相关的APIhasOwnproperty() 判断是否是自身属性 【返回 布尔值】Object.keys() 获取自身可枚举属性 【返回 数组】Object.getOwnPropertyNames() 获取自身可枚举和不可枚举属性【返回 数组】for...in 获取自身和继承的可枚举属性( 除去s...
2021-11-07 17:21:35
542
原创 【面试题集—No.02】实现数组去重的5种方法
方法一--两个循环嵌套遍历数组function unique(arr){ let newArr=[arr[0]]; for(let i=0;i<arr.length;i++){ let flag=true; for(let j=0;j<newArr.length;j++){ //遍历新数组,判断新数组中是否有该元素 if(arr[i]===newArr[j]){ flag=fals...
2021-11-06 20:35:34
140
原创 【JS基础整理—No.01】 内存管理(垃圾回收、内存泄漏、弱引用)
内存管理是指在声明一个变量时,我们为它分配一块内存空间,当不在需要时,将这块内存释放。在JS中开发者不需要手动进行内存管理,JS引擎会自动进行内存管理。一、内存分配当我声明变量时,我们要根据变量的数据类型进行内存分配。数据类型分为基本数据类型和引用数据类型。????下面是一个简单的区别图解基本类型:系统会为分配一块内存(栈),这块内存中保存的就是变量的内容。【String,Number,Boolean,Null,Undefined,Symbol】引用类型:其存储的只是一个地址而已..
2021-11-05 10:07:25
217
原创 【手写代码】深拷贝和浅拷贝
一、定义拷贝:就是赋值,把一个变量赋值给另一个变量,对变量的内容进行拷贝。了解深拷贝和浅拷贝之前需要对基本数据类型和引用数据类型的内存上存储(栈/堆)的区别有清楚地认识,深拷贝和浅拷贝是针对于引用数据类型。浅拷贝:拷贝后的数据会影响原数据深拷贝:产生了新的数据,而不是对原数据的引用判断依据:数据存放是对象在栈内存地址的引用还是对象的引用二、举例????1. 最简单的浅拷贝//地址的拷贝,不产生新的数据var arr = [1,2,4];Var new_arr = a
2021-11-02 14:21:58
824
原创 关于JavaScript V8 输入输出(牛客网笔试)
1.单行输入let line = readline()let arr = line.split("")2.多行输入let lines = []while(line = readline()){ lines.push(line)}for(let i = 0; i < lines.length; i++){ let arr = lines[i].split(" ") print(parseInt(arr[0])+parseInt(arr[1]))}注意:字符
2021-10-31 19:05:17
1144
原创 【ES6】关于class
只是一些学习记录,怕丢掉,暂存class F { static name = 'father'; //静态属性:class 本身的属性,即直接定义在类内部的属性( Class.propname ),不需要实例化。 ES6 中规定,Class 内部只有静态方法,没有静态属性。 static f_s = function() { //静态方法 只能通过类名调用 console.log('静态方法'); } constructor(name
2021-09-26 21:17:37
138
原创 【面试题集—No.01】0.1+0.2 != 0.3
一、背景原理:因为计算机是采用二进制来存储的,现实中的数在存入计算机需转换为二进制,在这个过程中出现可能无法整除的情况,所以现实中的数转换为二进制并计算的过程中就可能产生误差。JS 采用 IEEE 754 双精度版本(64位),六十四位中符号位占一位,整数位占十一位,其余五十二位都为小数位。二、解释原因:把十进制的0.1和0.2转换为二进制:0.1 => 0.0001 1001 1001 1001…(1001无限循环)0.2 => 0.0011 0011 0011 001
2021-09-26 15:02:05
225
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人