宋哈哈
码龄5年
  • 595,992
    被访问
  • 157
    原创
  • 4,333
    排名
  • 284
    粉丝
关注
提问 私信

个人简介:2018. 7 本科毕业,从此步入前端。。。。。。。。。

  • 目前就职: 京东集团
  • 加入CSDN时间: 2017-08-30
博客简介:

宋坚强大大~~

博客描述:
一步一步走
查看详细资料
  • 5
    领奖
    总分 1,017 当月 80
个人成就
  • 获得240次点赞
  • 内容获得84次评论
  • 获得538次收藏
创作历程
  • 16篇
    2022年
  • 6篇
    2021年
  • 22篇
    2020年
  • 43篇
    2019年
  • 71篇
    2018年
成就勋章
TA的专栏
  • 面试系列
    11篇
  • 手写系列
    7篇
  • 概念解释系列
    3篇
  • 面试
    3篇
  • nodejs基础
    5篇
  • flutter
    1篇
  • 前端--基础
    95篇
  • 项目中遇到的小问题
    65篇
  • gulp工具
    2篇
  • VUE相关
    8篇
  • 计算机网络
    23篇
  • Git
    14篇
  • es6
    8篇
  • 有用的代码总结
    67篇
  • webpack
    5篇
兴趣领域 设置
  • 前端
    javascriptcssvue.jsreact.jses6webpackxhtml前端框架
  • 后端
    node.js
  • 移动开发
    flutter
  • 网络
    https
  • 微软技术
    typescript
  • 小程序
    小程序
  • 职场和发展
    面试
一个专注于web前端的码农
  • 最近
  • 文章
  • 资源
  • 问答
  • 帖子
  • 视频
  • 课程
  • 关注/订阅/互动
  • 收藏
搜TA的内容
搜索 取消

6.什么是js的变量提升

js作用域1.在没有let之前 有三种分别是全局作用域、函数作用域、eval2.js的作用域,是静态的 在定义时产生3.执行函数时,会产生执行上下文(EC) , 分为全局上下文和函数上下文4.执行上下文包括三部分内容,变量对象(VO)、作用域链、this指向;(vo 是js引擎实现的,我们并不能直接去访问到它, 在全局上下文中,var a = 1; a就声明到了VO中)举个例子var a = 1;function sum() {}// 此时js引擎会这样去做:/** vo(
原创
发布博客 2022.05.09 ·
131 阅读 ·
0 点赞 ·
0 评论

5.在javascript中 基本数据类型有哪几种,null是对象类型还是基本数据类型?

基本数据类型:Number String Boolean null undefined Symbol看一下代码示例:var str = 'hello'str[0] = '123'console.log(str); // hello原因:在js中,内存分为栈内存和堆内存。栈内存存放有固定大小和空间的内容,但是字符串是个特例,它具有不变性,所以字符串也存储在了栈内存中;堆内存一般存储的是不固定的内容,如果声明的变量是引用类型的,会在栈内存中存放引用地址,这个地址指向堆存.
原创
发布博客 2022.05.09 ·
171 阅读 ·
0 点赞 ·
0 评论

4.执行上下文、执行上下文栈、作用域链

执行上下文Js代码在引擎中是以“一段一段”的方式来执行的,而非一行一行来分析执行的。这些可执行代码在执行的时候会创建一个一个的执行上下文。例如,当执行到一个函数的时候,js引擎会做一些“准备工作”,而这个“准备工作”,我们称其为执行上下文。 每个函数执行的时候 都会产生一个执行上下文 执行上下文的三个重要属性: 变量对象(VO):变量对象是与执行上下文相关的数据作用域,储存了在上下文中定义的变量和函数声明。并且不同的执行上下文也有着不同的变量对象,这里分为全局上下文中的变量对象和函数执行.
原创
发布博客 2022.05.09 ·
262 阅读 ·
0 点赞 ·
0 评论

手写一个instanceof

1.可以判断是不是某个类型的实例2.不能校验原始数据类型3.原理就是找实例的__proto__ 是不是等于构造函数的prototype__proto__一直找 直到找到null为止/** * * @param {实例} vm * @param {构造函数} VM * @returns */function instanceOf(vm, VM) { VM = VM.prototype; vm = vm.__proto__; while (true) { .
原创
发布博客 2022.05.05 ·
146 阅读 ·
1 点赞 ·
0 评论

3.为什么0.1+0.2不等于0.3 ?

1.在计算机中 存储都是2进制的, 数字计算时也会先转换成2进制再进行计算2.十进制 => 二进制如何转化的?0.1 可以把 0看做整数位 1看做是小数位规则:* 整数位 当前位的值*2^(n-1) 当前位的值乘以2的n-1次密* 小数位 把当前位的值不停的*2取整1.举个整数的例子:二进制数1010 => 0*2^0 + 1*2^1 + 0*2^2 + 1*2^3 = 0 + 2 + 0 + 8 = 10不信你用 parseInt('1010', .
原创
发布博客 2022.05.05 ·
59 阅读 ·
0 点赞 ·
0 评论

手写一个bind

bind的特点:1.bind可以修改this指向,并且可以绑定参数2.被bind之后的函数并不会执行,而是返回一个绑定后的函数,这个函数需要被调用才会执行3.如果被bind之后返回的函数被new了 那么函数中的this就是new出来的实例4.new出来的结果,可以找到原有类的原型Function.prototype.bind = function (context) { let _this = this; let bindArgs = Array.prototype.sli.
原创
发布博客 2022.04.26 ·
32 阅读 ·
0 点赞 ·
0 评论

手写一个new关键字

new的特点1.new 一个构造函数,会自动reutrn一个实例化对象2.new完的实例化对象____proto___指向构造函数的prototype3.new构造函数传参自动赋值给当前实例化对象// 把new关键字 改成一个函数 这样调用 mockNew(Animal, '高级动物')function mockNew() { let Constructor = [].shift.call(arguments); // 拿到传入的第一个参数(构造函数) let obj =.
原创
发布博客 2022.04.24 ·
146 阅读 ·
0 点赞 ·
0 评论

手写call和apply的原理

call的特点1.可以改变当前函数的this指向2.可以让函数执行Function.prototype.call = function (context) { // call是可以这样用的fn.call.call.call 如果调用的时候没传上下文,则context是window context = context ? Object(context) : window; context.fn = this; // 给context添加一个属性,待会儿要让它执行 // c.
原创
发布博客 2022.04.24 ·
71 阅读 ·
0 点赞 ·
0 评论

mac vscode终端node版本与系统node版本不一致问题

MacOS中vscode与系统终端默认的node版本不一致
原创
发布博客 2022.03.27 ·
1022 阅读 ·
0 点赞 ·
0 评论

设计模式-观察者模式

观察者模式概念,什么是观察者模式,观察者模式简单示例
原创
发布博客 2022.03.06 ·
14 阅读 ·
0 点赞 ·
0 评论

设计模式-发布订阅

发布订阅模式的概念,最简单的发布订阅示例,什么是发布订阅
原创
发布博客 2022.03.06 ·
284 阅读 ·
0 点赞 ·
0 评论

2.js判断变量类型:typeof、instanceof、constructor、Object.prototype.toString.call()的区别

typeof 判断 不能判断对象类型 typeof [] typeof {} typeof null // 都返回 'object' instanceof 判断谁是谁的实例 依据是 __proto__ constructor 可以找到这个变量是通过谁构造出来的 Object.prototype.toString.call() 不能细分谁是谁的实例定义一组变量let num = 123;let str = 'abcd';let bool = true;let obj = { a...
原创
发布博客 2022.03.06 ·
56 阅读 ·
0 点赞 ·
0 评论

高阶函数的概念

什么是高阶函数,高阶函数的概念,高阶函数的用处
原创
发布博客 2022.03.06 ·
33 阅读 ·
0 点赞 ·
0 评论

1.js基础-原形与原形链

一图搞懂构造函数原型、原型链的关系
原创
发布博客 2022.03.05 ·
17 阅读 ·
0 点赞 ·
0 评论

手写reduce函数

reduce的用法及实现原理
原创
发布博客 2022.03.05 ·
32 阅读 ·
0 点赞 ·
0 评论

手写一个深拷贝函数

Object.assign和展开运算符都是浅拷贝 如何实现一个深拷贝function deepClone(obj) { if (obj == null) return obj; // 如果是null 或者undefined 直接返回 // 正则表达式或者日期对象 直接返回 if (obj instanceof Date) return new Date(obj); if (obj instanceof RegExp) return new RegExp(obj); // 不..
原创
发布博客 2022.03.05 ·
428 阅读 ·
0 点赞 ·
0 评论

mac 安装cnpm

cnpm安装
原创
发布博客 2021.12.06 ·
448 阅读 ·
0 点赞 ·
0 评论

手写es6的模板字符串实现原理

es6模板字符串实现原理
原创
发布博客 2021.05.07 ·
337 阅读 ·
1 点赞 ·
1 评论

2020-2021字节前端一面

以下内容来自github 作者微信公众号【高级前端进阶】近期梳理前端面试题的过程也是提升自我的一个过程,愿共同进步一:写 React / Vue 项目时为什么要在列表组件中写 key,其作用是什么?概述:key 是给每一个 vnode 的唯一 id,可以依靠 key,更准确,更快的拿到 oldVnode 中对 应的 vnode 节点详细:基于没有key的情况diff速度会更快。确实,这种观点并没有错。没有绑定key的情况下,并且在遍历模板简单的情况下,会导致虚拟新旧节点对比更快,..
原创
发布博客 2021.03.03 ·
483 阅读 ·
1 点赞 ·
0 评论

前端JS面试题

一:let const var比较/区别1.变量提升var声明的变量存在变量提升(将变量提升到当前作用域的顶部)。即变量可以在声明之前调用,值为undefined。let和const不存在变量提升。即它们所声明的变量一定要在声明后使用,否则报ReferenceError错。console.log(f) //undefinedvar f = 1 ;console.log(g) //ReferenceError: g is not definedlet g = 2;console
原创
发布博客 2021.03.02 ·
1261 阅读 ·
1 点赞 ·
0 评论
加载更多