
前端三剑客之JavaScript
CodeMagiclin
前端开发工程师。
展开
-
【前端三剑客之JavaScript】调用栈
JavaScript 中有很多函数,经常会出现在一个函数中调用另外一个函数的情况,调用栈就是用来管理函数调用关系的一种数据结构。因此要讲清楚调用栈,你还要先弄明白函数调用和栈结构。什么是函数调用?函数调用就是运行一个函数,具体使用方式是使用函数名称跟着一对小括号。当执行到 函数的时候,我们就有了两个执行上下文了——全局执行上下文和 函数的执行上下文。 JavaScript 引擎是通过一种叫栈的数据结构来管理这些执行上下文。 在执行上下文创建好后,JavaScript 引擎会将执行上下文压入栈中,通常把原创 2021-11-29 14:45:05 · 413 阅读 · 0 评论 -
【前端三剑客之JavaScript】变量提升
【前端三剑客之JavaScript】变量提升JavaScript执行情况:1.在执行过程中,若使用了未声明的变量,那么 JavaScript 执行会报错。2.在一个变量定义之前使用它,不会出错,但是该变量的值会为 undefined,而不是定义时的值。3.在一个函数定义之前使用它,不会出错,且函数能正确执行。js中变量的声明和赋值var myname //声明部分myname = '极客时间' //赋值部分js中函数的声明和赋值function foo(){ console.原创 2021-11-19 11:25:45 · 384 阅读 · 0 评论 -
【ECMAScript6】你不得不知道系列之箭头函数
【ECMAScript6】你不得不知道系列之箭头函数ES6中新增的定义函数的方式:( ) => { }const fn = ( ) =>{ }若函数体中仅一句代码且其执行结果是其返回值则可省略大括号:function sum(num1.num2){ return num1+num2;}const sum = (num1,num2) =>num1+num2;若形参只有一个,则小括号也可省略:const fn = v =>{ alert(v);}f原创 2021-03-14 15:22:13 · 165 阅读 · 0 评论 -
【ECMAScript6】你不得不知道系列之实例方法
【ECMAScript6】你不得不知道系列之实例方法·实例方法之find():用于找出第一个符合条件的数组成员,若没有找到则返回undefineddemo:let ary =[{ id:1, name:'张三'},{ id:2, name:'李四'}];let target = ary.find((item,index) => item.id ==2);example:var ary =[{ id:1, name:'张三'},{原创 2021-03-20 16:51:23 · 100 阅读 · 0 评论 -
【ECMAScript6】你不得不知道系列之字符串
【ECMAScript6】你不得不知道系列之字符串·模板字符串:ES6新增的创建字符串的方式,使用反引号"`"定义let name = `zhangsan`;模板字符串可以通过“$”+”{}“符号解析变量let name = `zhangsan`; let sayhello = `Hi,my name is ${name}`;console.log(sayhello);//Hi,my name is zhangsan模板字符串可以换行let result = { name:"z原创 2021-03-20 22:24:34 · 120 阅读 · 0 评论 -
【ECMAScript6】你不得不知道系列之剩余参数&扩展运算符
【ECMAScript6】你不得不知道系列之剩余参数剩余参数语法允许我们将一个不定数量的参数表示为一个数组。ES6中对于函数多余的实参,采用args数组接收。function sum(first,...args){ console.log(first); console.log(args);}sum(10,20,30)const sum = (...args)=> { //使用三点加args表示接收多余的实参 let total = 0 ; args.fo原创 2021-03-20 15:58:28 · 178 阅读 · 1 评论 -
【ECMAScript6】你不得不知道系列之let、const和var的区别
【ECMAScript6】你不得不知道系列之letlet关键字是ES6中用来声明变量的:1、具有块级作用域特性,即let声明的变量只能在一对花括号内起作用。eg:if(true){var a=1;let b=1;console.log(a);//1console.log(b);//1}console.log(a);//1console.log(b);//undefined2、不存在变量提升:即不可像以前先使用变量再声明了。if(true){console.log原创 2021-03-14 11:39:56 · 203 阅读 · 0 评论 -
【ECMAScript6】你不得不知道系列之Set
【ECMAScript6】你不得不知道系列之SetES6提供了Set数据结构,类似于数组,但其成员值是唯一的。Set本身是一个构造函数,用来生成Set数据结构const s = new Set();console.log(s.size);//0Set函数可接收一个数组作为参数初始化:const ss = new Set ([1,2,3,4,4]);console.log(ss.size);//5Set 实现数组去重const s1 = new Set(["a","a","b","b"])原创 2021-03-20 17:10:04 · 133 阅读 · 0 评论 -
【前端三剑客之JavaScript】闭包
闭包(closure):指有权访问另一个函数作用域中变量的函数,即一个作用域可以访问另一个函数内部的局部变量。function fn (){var num = 10;function fun(){ console.log(num);} fun()}fn ()函数外面的作用域也可访问函数内部的局部变量:function fn (){var num = 10;return function (){ console.log(num);}}var f = fn(.原创 2021-04-24 23:39:02 · 117 阅读 · 0 评论 -
【前端三剑客之JavaScript】浅拷贝和深拷贝
一、浅拷贝:仅拷贝一层,更深层次对象级别的只拷贝引用拷贝的是地址,新旧对象指向的是同一数据,拷贝数据后改动数据会影响原数据var obj = { id = '1', name:'andy' msg : { age:18 }};var o ={};for(var k in obj){ //k为属性名 obj[k]为属性值 o[k]= obj[k];}o.msg.age = 20;console.log(onj);//var ob原创 2021-04-24 17:27:46 · 132 阅读 · 0 评论 -
【前端三剑客之JavaScript】函数及其this指向
【前端三剑客之JavaScript】函数及其this指向一、函数定义方式:(1) 自定义(命名)函数 ——> function fn() {} ;(2) (匿名)函数表达式 ——> var fun = function () {} ;(3) new Function(‘参数1’,‘参数2’,‘函数体’)var f = new Function('a','b','console.log(a+b)') ;f(1,2);函数也属于对象;所有函数都是Function函数的实例对象;原创 2021-04-23 10:36:46 · 109 阅读 · 0 评论 -
【前端三剑客之JavaScript】类与对象
面向对象:三大特性:封装、继承、多态优点:易维护、复用、扩展,由于面向对象有封装、继承、多态的特性,可设计出低耦合的系统使系统更加灵活更易于维护缺点:性能比面向过程低面向过程:优点:性能比面向对象高,适合与硬件联系紧密的东西例如单片机采用面向过程编程缺点:没有面向对象易维护、复用、扩展类抽象了对象的公共部分,泛指某一大类(class),对象则特指某一具体的事物,通过类实例化一个具体的对象类必须使用new关键字实例化。在ES6中类不存在变量提升,所以必须先定义类,才能通过类实例化对象。类里面原创 2021-04-04 21:18:23 · 172 阅读 · 0 评论