最近忽然有些不安,不少东西看过是看过,可是终归不属于本身,过一阵子也就忘了。前阵子面试了几我的,发现对于不少知识点,都只是看过、听过、大概能说几句。想了一段时间,决定总结出本身的东西整理的结果是很欣慰的,发现了不少以为本身知道但其实真的不知道的知识点。javascript
本文是先整理出js的基础知识,面向初学者和即将面试的人群,我但愿给大家的是鱼竿,能够拿来钓各类面试官,固然,这须要我再努力一把,给出好鱼竿。css
若是你收获了新的知识,欢迎点赞关注评论,这是对做者最大的鼓励~html
前端路漫漫,与诸君共勉!前端
目录(就是目录):java
以 标题+摘要 的方式罗列,具体内容点击标题查看面试
写代码,必定要有良好的编程习惯。若是实在写很差怎么办呢编程
No Code数组
No code is the best way to write secure and reliable applications. Write nothing; deploy nowhere.浏览器
谢同事不杀之恩,平时多投喂些零食。网络
语义元素能够清楚地向浏览器和开发者描述其意义。即元素自己传达了关于标签所包含内容类型的一些信息。
为何要语义化?
- 页面结构: 使页面没有css的状况下,也可以呈现出很好的内容结构
- 有利于SEO: 爬虫依赖标签来肯定关键字的权重,所以能够帮助爬虫抓取更多的有效信息
- 提高用户体验: 例如title、alt能够用于解释名称或者解释图片信息,以及label标签的灵活运用。
- 便于团队开发和维护: 语义化使得代码更具备可读性,让其余开发人员更加理解你的html结构,减小差别化。
- 方便其余设备解析: 如屏幕阅读器、盲人阅读器、移动设备等,以有意义的方式来渲染网页。
任何编程语言都不可缺乏的组成部分——“类型”。avaScript 是一种弱类型或者说动态语言。这意味着你不用提早声明变量的类型,在程序运行过程当中,类型会被自动肯定。
提问:0.1 + 0.2 === 0.3的结果是什么?那0.1 + 0.3 === 0.4的结果呢?
提问: 1 === true的结果是什么? 那么 2 === true 的结果呢?
数据分为基本数据类型(String, Number, Boolean, Null, Undefined,Symbol)和对象数据类型。
一、基本数据类型的特色:直接存储在栈(stack)中的数据
二、引用数据类型的特色:存储的是该对象在栈中引用,真实的数据存放在堆内存里
en。。。上面这两句严格来讲,是错的
只有对象类型才有继承与原型概念,不断向上追溯的原型共同组成了原型链
与其余语言相比,函数的
this
关键字在 JavaScript 中的表现略有不一样。this指当前执行代码的环境对象,函数的调用方式决定了this
的值。
apply()
方法接收一个指定的this
值和一个包含多个参数的数组来调用一个函数。call()
方法接收一个指定的this
值和一个参数列表来调用一个函数。bind()
方法建立一个新的函数,在bind()
被调用时,这个新函数的this
被指定为bind()
的第一个参数,而其他参数将做为新函数的参数,供调用时使用使用
call
和apply
函数的时候要注意,若是传递给this
的值不是一个对象...
做用域是指程序源代码中定义变量的区域。做用域规定了如何查找变量,也就是肯定当前执行代码对变量的访问权限。
JavaScript 采用词法做用域(lexical scoping),也就是静态做用域。代码一旦写好,不用执行, 做用范围就已经肯定好了,这个就是所谓的词法做用域。
执行上下文是评估和执行 JavaScript 代码的环境的抽象概念。Javascript 代码都是在执行上下文中运行。
执行栈,是一种拥有 LIFO(后进先出)数据结构的栈,被用来存储代码运行时建立的全部执行上下文。
JavaScript 的可执行代码(executable code)的类型只有三种,全局代码、函数代码、eval代码。对应着,JavaScript 中有三种执行上下文类型。
实际上,
let / const
也存在变量提高 。
- 闭包就是内部函数,咱们能够经过在一个函数内部或者
{}
块里面定义一个函数来建立闭包。闭包能够访问外部做用域,即便这个外部做用域已经执行结束。- 闭包在没有被外部使用的状况下,随执行结束销毁
- 闭包的外部做用域是在其定义的时候已决定,而不是执行的时候。
javascript是一门单线程语言,在最新的HTML5中提出了Web-Worker,但javascript是单线程这一核心仍未改变,无论谁写的代码,都得一句一句的来执行。 事件循环,能够理解为实现异步的一种方式,用来协调用户交互,脚本,渲染,网络这些不一样的任务。
- 函数式编程是一种编程范型,它将电脑运算视为数学上的函数计算,而且避免使用程序状态以及易变对象。
- 函数式编程更增强调程序执行的结果而非执行的过程,倡导利用若干简单的执行单元让计算结果不断渐进,逐层推导复杂的运算,而不是设计一个复杂的执行过程。
- 函数式编程的思惟过程是彻底不一样的,它的着眼点是函数,而不是过程,它强调的是如何经过函数的组合变换去解决问题,而不是我经过写什么样的语句去解决问题
前端领域,咱们能看到不少函数式编程的影子:ES6 中加入了箭头函数,Redux 引入 Elm 思路下降 Flux 的复杂性,React16.6 开始推出 React.memo(),使得 pure functional components 成为可能,16.8 开始主推 Hook,建议使用 pure function 进行组件编写……
Web Worker (工做线程) 是 HTML5 中提出的概念,它让咱们能够在页面运行的 JavaScript 主线程中加载运行另外单独的一个或者多个 JavaScript 线程;
Web Worker 提供的多线程编程能力与们传统意义上的多线程编程(Java、C++ 等)不一样,主程序线程和 Worker 线程之间,Worker 线程之间,不会共享任何做用域或资源,它们间惟一的通讯方式就是一个基于事件监听机制的 message。
未完待续
后续还会花费一到两周陆续补充一些js基础知识,而后就会写css部分,
若是能够,请尽可能收藏关注,这是对个人最大承认。能力有限,若是你有好的知识点或者不一样的意见,欢迎在下方评论,我会及时跟进。