Cesium常见Entity加载
Cesium常见Entity加载
🛠 从零搭建组件库(一)
从零搭建一个属于自己的组件库,实现工程化第一步
Docker及Jenkins安装
从 0 到 1 实现一套 CI/CD 流程
MYSQL学习(十五)
存储函数和存储过程
MYSQL学习(十四)
自定义变量和语句结束分隔符
面试笔记-JavaScript
JavaScript变量类型JavaScript 变量类型分为值类型,引用类型;值类型存放在栈中,引用类型存放在堆中。
其中值类型有 7 种:
String
Boolean
Number
Null
Undefined
Symbol
BigInt
引用类型统称为Object,又可细分为以下 3 种:
Object
Array
Function
typeof可以通过typeof关键字来判断一个变量的类型:
1234567891011typeof 'nick' // 'string'typeof true // 'boolean'typeof 123 // 'number'typeof undefined // 'undefined'typeof Symbol('symbol') // 'symbol'typeof BigInt('100') // 'bigint'typeof null // ' ...
原型与原型链
简述原型与原型链
在 JavaScript 中,函数可以有属性。 每个函数都有一个特殊的属性叫作原型(prototype)。
通常,我们会通过构造函数对原型进行操作:
123function Foo() {}console.log(Foo.prototype) // {constructor: ƒ}
打印出来的对象就是Foo函数的原型,将其展开,发现里面有两个属性constructor和__proto__。constructor指向Foo函数本身,__proto__是一个对象。
可以在函数的原型上添加一些其他属性,比如:
12Foo.prototype.name = 'nick'Foo.prototype.age = 18
再次查看Foo的原型:
1console.log(Foo.prototype)
发现刚刚添加的name与age已经在原型中了。
现在创建一个Foo的实例:
1var foo = new Foo()
将其打印,发现里面有一个__proto__属性,而这个属性里面包含了之前在构造函数Foo的原型中创建 ...
事件循环
事件循环前言首先,得明确一点,JavaScript 是一门单线程语言。也就是说,JavaScript 代码是同步执行的,所有的代码都是由上而下执行的:
12345var name = 'nick'console.log(name)var age = 18console.log(age)
但是如果代码量过大,有些代码的逻辑又复杂,一直不能运行完毕,后面的代码就无法运行,这就会造成一些堵塞的问题。就好比你去公交车站排队,等的人多了,你就必须等前面的人一个一个进入车里面,你才能再进去。
同步任务和异步任务JavaScript 中,整体代码的运行我们可以称之为同步任务,也就是一行一行的执行;而另一些代码,可以不必等待前面的代码执行完毕之后再去执行,我们称之为异步任务。比方说,我们打开一个网页,页面骨架元素的加载就等同于同步任务,而网页上图片这种耗时的加载就等同于异步任务。
这里借用社区的一张图片:
解释一下图片上的内容:
当一段代码开始运行时,会检查里面的同步任务及异步任务;同步任务进入主线程,异步任务进入Event Table;
Event Table会注册异步任务 ...
函数作用域
函数作用域1234567var name = 'nick'function foo() { console.log(name)}foo()
在上面的这段代码中,name处在全局作用域下;foo函数也是在全局中,它所处的作用域也是全局。
改变一下代码:
123456789101112var name = 'nick'function foo() { var age = 18 function bar() { console.log(age, name) } bar()}foo()
现在,name和foo所处的作用域环境没变,bar函数处在两个作用域中,一个是全局作用域,另一个是foo函数的作用域。
都知道的一个知识点是函数内部的作用域是可以访问外部的作用域,而外部作用域不可以访问内部作用域。当函数执行时,会从自身内部作用域开始查找所需要的属性,若是找到所需要的属性,便会停止寻找;没有找到,便会向外查找,一直查找到最外层作用域,也就是全局作用域;如果全局作用域没有,那就会 ...