JavaScript
文章平均质量分 65
总结JavaScript的学习要点
一只小青锐
这个作者很懒,什么都没留下…
展开
-
浅析闭包
1. 什么是闭包闭包是指能够访问其他函数内部变量的函数。2. 闭包经典写法function fn() { var a = 10; return function(b) { console.log(a+b); }}var getVal = fn();getVal(5);//15//定时器与闭包for(var i=0; i<5; i++) { setTimeout(function(){ console.log(i);原创 2021-04-13 17:08:45 · 68 阅读 · 0 评论 -
JavaScript中call,apply和bind方法
1. 三者的区别call和apply都是为了解决函数调用的时候函数内部this指向的问题,默认第一参数是this指向,其余的都是函数的形参。call的形参用逗号隔开,apply的参数用一个数组接收。call和apply是改变this指向后立即执行函数,而bind是返回一个绑定上下文的新函数,后续可以通过新函数执行。bind函数返回的新函数不可以再通过apply call改变它的this指向。...原创 2021-04-07 17:13:02 · 85 阅读 · 0 评论 -
深入理解JavaScript-this
1. this的说明在绝大多数情况下,this值的确定与函数的调用方式有关。2. 全局执行上下文中的this在全局执行环境中(在任何函数体外部)this 都指向全局对象。在JS引擎运行global code之前,会创建一个全局执行上下文压入执行栈的栈底,这个全局执行上文的ThisBinding绑定的是全局对象,在浏览器里指的就是window。3. 函数执行上下文中的thisJavaScript是静态作用域,词法环境是由代码结构决定的,开发把代码写成什么样,词法环境就是怎么样,跟方法在哪里调用没有关原创 2021-04-06 19:07:09 · 138 阅读 · 0 评论 -
深入理解JavaScript函数
1. JavaScript定义函数的方式1.函数声明2.函数表达式3.立即执行函数4.new Funcion(arg1,arg2…,argn,body)创建函数。2. 函数声明首先看一个例子:var a = 2;function foo() { console.log(a); // 2}function bar() { var a = 3; foo();}bar();我们用词法作用域来表示:GlobalExecutionContext { ThisB原创 2021-04-06 11:23:32 · 143 阅读 · 0 评论 -
作用域与作用域链
一、作用域1.1 什么是作用域作用域是在运行时代码中的变量,函数的可访问性。1.2 作用域分类全局作用域:在代码中任何地方都能访问到的对象拥有全局作用域,一般来说有以下三种情形拥有全局作用域。(1) 最外层函数和在最外层函数外面定义的变量拥有全局作用域var outVariable = "我是最外层变量"; //最外层变量function outFun() { //最外层函数 var inVariable = "内层变量"; function innerFun() { //原创 2021-04-02 10:16:06 · 409 阅读 · 0 评论 -
JS中的reduce()用法
1. 语法arr.reduce(callback, initialValue)callback:每个元素都要执行的回调函数initicalValue:作为第一次调用 callback 的第一个参数。2. 回调函数的参数1、previousValue (上一次调用回调返回的值,或者是提供的初始值(initialValue),这个值可以使引用数据类型)2、currentValue (数组中当前被处理的元素)3、index (当前元素在数组中的索引)4、array (调用 reduce函数的数组)原创 2021-03-25 11:34:01 · 387 阅读 · 0 评论 -
JS事件详细解析
事件捕获和事件冒泡都是解决页面中事件流(事件发生顺序)的问题1.事件冒泡与事件捕获事件冒泡:事件冒泡按照从最特定的事件目标到最不特定的事件目标(document对象)的顺序触发,是从内向外的。事件捕获:事件会从最外层元素开始发生,直到最具体的元素。2.DOM0级事件事件绑定:dom.ontype = function(){}事件解绑:dom.ontype = null(基本数据类型也行,但不够让人理解)缺点:不能给同一个dom对象绑定多个相同类型的事件处理程序优点:兼容性好默认事件冒泡处原创 2021-03-22 10:22:04 · 178 阅读 · 0 评论 -
instanceof的实现原理
instanceof是我们经常用来判断一个实例是否属于个类型。其实现原理是,查找构造函数的原型对象是否在实例对象的原型链上,如果在返回true,如果不在返回falsefunction myinstanceof(L,R){ var LP = L.__proto__; var RP = R.prototype; while(true){ if(LP === null){ return false; } if(LP === RP){ return true; } LP .原创 2021-03-19 14:00:43 · 1156 阅读 · 0 评论 -
JS中的继承方式
1.原型继承//父类型function Person(name, age) { this.name = name; this.age = age;}Person.prototype.say = function() { connsole.log("hello");}Person.prototype.card = ['card1', 'card2', 'card3'];//子类型function Student(name, age, gender){ Person(name,age);原创 2021-03-19 11:00:36 · 181 阅读 · 0 评论 -
四种判断数据类型的方法
1.typeoftypeof undefined // 'undefined' typeof '10' // 'string' typeof 10 // 'number' typeof false // 'boolean' typeof Symbol() // 'symbol' typeof Function // ‘function' typeof null // ‘object’ typeof [] // 'object' typeof {} //原创 2021-03-17 19:13:58 · 5653 阅读 · 0 评论 -
深入理解执行上下文和执行栈
一、执行上下文1. 什么是执行上下文执行上下文简而言之,就是JavaScript代码解析和执行时所在的环境2.执行下文分类全局执行上下文(1) 不在任何函数中的代码都位于全局执行上下文中。(2) 在JavaScript代码执行时,会创建一个全局执行上下文,并将其压入执行栈中(3) 全局执行上下文做了两件事:1.创建一个全局对象,这个对象在浏览器中是window,在node.js中是global。2.将this指针指向这个全局对象。(4)一个程序只能有一个全局执行上下文函数执行上下文(1原创 2021-03-15 21:10:19 · 392 阅读 · 0 评论 -
JS中的原型与原型链
一、什么是原型原型是Javascript中的继承的基础,JavaScript的继承就是基于原型的继承。二、函数的原型对象创建一个函数A(就是就是声明一个函数),那么浏览器就会在内存中创建一个对象B,而且每个函数都默认会有一个属性 prototype 指向了这个对象,( 即:prototype的属性的值是这个对象 )。这个对象B就是函数A的原型对象,简称函数的原型。这个原型对象B 默认会有一个属性 constructor 指向了这个函数A ( 意思就是说:constructor属性的值是函数A )。转载 2021-03-12 13:39:04 · 127 阅读 · 0 评论 -
var,let和const的理解
一、全局作用域与函数作用域在ES6之前,JS只有两个作用域,全局作用域和函数作用域。那么什么是作用域呢?作用域是指一个变量的作用范围。在ES6中新增了两个关键字,let和const原创 2021-03-07 14:32:30 · 296 阅读 · 1 评论 -
变量提升与函数提升
在写博客前,发现了一个有趣的东西,问了问朋友,也查了查博客和知乎,查了好久,终于看见了解答,不过当时的网站忘记了QAQ,凭着记忆再记录来吧。function fun(){ console.log(a); a = 10; console.log(a);}fun();console.log(a);Q:上面的代码会如何输出?我当时的理解:a作变量提升,声明在作用域的最前方,肯定是第一个输出undefined第二个输出10,第三个报错啦~。运行结果:第二行直接报错。报错后思考:a这样写是.原创 2021-03-05 11:11:26 · 386 阅读 · 2 评论