js基础
NanDaJ
这个作者很懒,什么都没留下…
展开
-
javascript执行上下文
什么是执行上下文1.什么是执行上下文总结一句话:执行上下文就是当前javascript代码被解析和执行时存在的环境(抽象概念)。2.执行上下文的类型(1)全局执行上下文:这是默认的,最基础执行上下文。不在函数内部的代码都位于全局执行上下文中创建一个全局对象,其实就是我们的windown对象将this指针指向这个全局对象。(2)函数执行上下文:每次函数被调用的时候,就会创建一个新的执行上下文。每个函数都有自己的执行上下文一个程序中可以存在任意数量的函数执行上下文每一个函数执行上下文被创原创 2021-10-24 22:34:57 · 717 阅读 · 0 评论 -
二叉树精选
二叉树的最大深度题目链接/** * Definition for a binary tree node. * function TreeNode(val, left, right) { * this.val = (val===undefined ? 0 : val) * this.left = (left===undefined ? null : left) * this.right = (right===undefined ? null : right) * }原创 2021-10-14 20:36:26 · 65 阅读 · 0 评论 -
javascript词法作用域(静态作用域)
javascript采用的静态作用域,函数的作用域在函数定义的时候就决定了,相反,动态作用域是在函数调用的时候决定的var value = 1;function foo() { console.log(value);}function bar() { var value = 2; foo();}bar();//打印 1分析:javascript采用的是静态作用域,所以当执行foo函数的时候,先在foo函数内部查找有没有value,如果没有则根据定义的位置往上一原创 2021-10-14 18:45:20 · 113 阅读 · 0 评论 -
浅谈call,apply
这两个方法都是函数对象的方法,需要通过函数对象来调用当对函数调用call和apply都会调用函数执行调用call和apply可以将一个对象指定为第一个参数,此时这个对象将会成为函数执行时的thisvar obj = { name:"小红", sayName:function(){ console.log(this) }}var obj2 = { name:"小明"}fun()//windowfun.call(obj)//objobj.sayName()//.原创 2021-10-14 17:53:11 · 64 阅读 · 0 评论 -
js原型和原型链浅谈
好文推荐:文档链接我们创建的每一个函数,解析器都会向函数中添加一个属性prototype这个属性对应一个对象,这个对象就是我们所谓的原型对象如果函数作为普通函数调用,prototype没有任何作用当函数通过构造函数调用时,它所创建的对象中都会有一个隐含的属性指向该构造函数的原型对象原型对象就相当于一个公共的区域,所有同一个类的实例都可以访问到这个原型我们可以将对象中共有的内容,统一设置到原型对象中当我们访问对象的一个属性或方法时,它会先在自身对象中寻找,如果有则直接使用,如果没有则会去原型对原创 2021-10-14 16:43:37 · 78 阅读 · 0 评论 -
Js函数中的this指向
解析器在调用函数每次都会向函数内部传递进一个隐含的参数这个隐含的参数就是this,this指向的是一个对象这个对象我们称为函数执行的上下文对象根据函数的调用方式的不同,this会指向不同的对象 1.以函数的形式调用时,this指的是window 2.以方法的形式调用时,this指的是调用方法的对象function fun(a,b){ console.log(this)}fun()//window对象var obj = { name:"hello", .原创 2021-10-14 16:36:17 · 67 阅读 · 0 评论 -
sort,map,reduce,filter
mapvar obj = [{ age:11,name:"a"},{ age:22,name:"b"},{ age:33,name:"c"}]//第一个参数:数组中正在处理的当前元素//第二个参数代表索引//第三个是正在调用的这个数组var obj1 = obj.map(function(e,inx,arr){ console.log(e,inx,arr) return e.name})//箭头函数形式// var obj1 = obj.map(原创 2021-10-12 19:00:19 · 85 阅读 · 0 评论 -
函数直接引用和对象引用函数属性中this的不同
解析器在调用函数每次都会向函数内部传递进一个隐含的参数这个隐含的参数就是this,this指向的是一个对象这个对象我们称为函数执行的上下文对象根据含糊的调用方式的不同,this会指向不同的对象1.以函数的形式调用时,this指的是window2.以方法的形式调用时,this指的是调用方法的对象function fun(a,b){ console.log(this)}fun()//window对象var obj = { name:"hello", say:fun}.原创 2021-10-12 08:09:23 · 302 阅读 · 0 评论 -
构造函数创建对象时对象内的函数应该如何构造
function Person(name){ this.name = name this.sayName = function(){ console.log(this.name) }}var p1 = new Person("小明")var p2 = new Person("小红")console.log(p1.sayName==p2.sayName)//false从上图可以看出每个对象的方法是不相等的,是因为每次创造一个新对象时都会重新建立一个新方法,原创 2021-10-12 08:02:46 · 76 阅读 · 0 评论 -
函数作用域
1.函数作用域声明提前函数作用域内var和function会声明提前var a = 10function fun(){ console.log(a)//打印undefined var a = 35}fun()在函数作用域中也有声明提前的特性,var和function都提前,所以相当于以下代码var a = 10function fun(){ var a console.log(a) a = 35}fun()2.函数作用域的就近原则函数作用域原创 2021-10-11 23:51:33 · 66 阅读 · 0 评论 -
javascript的变量声明提前和函数声明提前
var变量提升console.log(a)//打印undefinedvar a = 123console.log(a)//未定义该属性a = 123这是为什么呢?使用var关键字声明的变量会在所有的代码执行之前被声明,但不会赋值,所以是undefined如果声明变量不使用var关键字,则变量不会被声明提前所以第一段代码等同于var aconsole.log(a)//aa = 123函数的声明提前fun()//我是funfun2()//undefined is not a原创 2021-10-11 22:05:21 · 373 阅读 · 0 评论 -
var,let,const的区别
var1.变量提升注意:只能提升定义,不能提升赋值提升是指无论var出现在一个作用域的哪个位置,这个声明都属于当前整个作用域,在其中到处都可以被访问。注意知识定义提升,赋值不能提升console.log(a);//undefinedvar a = 1;var a;console.log(a);//undefineda = 1;如果未定义,就会报错console.log(b);//假设b未声明过,Uncaught ReferenceError: b is not defined2.原创 2021-07-05 12:52:14 · 37 阅读 · 0 评论 -
js基本类型和引用类型的区别
基本定义可以看这一篇文章链接演示var i1 = "aaa"var i2 = i1console.log(i2)i2 = "bbb"console.log(i1)console.log(i2)console.log("---------------")var o = { name: "ming", age: 19}var o1 = oconsole.log(o1.age)console.log(o.age)o1.age = 10o.name = "hong"c原创 2021-07-05 09:27:51 · 49 阅读 · 0 评论