当前位置: 首页 > article >正文

前端面经每日一题Day15

1.作用域链

当JavaScript引擎需要查找一个变量的值时,它会沿着作用域链向上查找,从当前作用域开始,逐级向上查找,直到找到变量或者达到全局作用域。

作用域链是由当前作用域和所有父级作用域组成的一个链式结构。

        let x=11
        function fn1(){
            let y=22
            function fn2(){
                let z=33
                console.log('x',x,'y',y,'z',z) //11,22,33
            }
            fn2()
        }
        fn1()

2.变量提升

变量或者函数的声明,在代码执行之前,会被提升到它们各自作用域的顶部。这里的提升仅仅是声明被提升,变量的赋值并没有被提升。

变量声明提升:var关键字声明的变量,会被提升到作用域的顶部,但变量的赋值不会被提升。

函数声明提升,函数的声明也会被提升到作用域顶部,但是和变量声明的区别就是,函数声明的函数体和参数都会被提升。

var声明的变量可以变量提升,let,const声明的变量不可以变量提升。

console.log(a); // 输出: undefined(因为变量声明被提升,但赋值没有)
var a = 2;
 
function foo() {
    console.log(b); // 输出: function foo() { ... }(因为函数声明被完全提升)
    var b = 3;
    function b() {
        console.log("This is function b");
    }
}
foo();

3.原型,构造函数,实例

原型Prototype:可以理解为该对象的爹,允许对象继承其他对象的属性和方法。在JavaScript中,每个对象都包含__**proto__**属性指向该对象的原型对象。对象的属性和方法通过原型链实现继承。

构造函数Constructor:特殊的函数,用于创建和初始化对象。

过程:使用new关键字和构造函数时,JavaScript会创建一个新的空对象,并将这个新对象的内部原型__proto__设置为构造函数prototype属性引用的对象,构造函数内部的this关键字会被绑定到这个新对象上,你可以在构造函数内部为新对象添加属性和方法。

实例Instance:通过new关键字和构造函数创建出来的对象就是实例。每个实例都会继承构造函数原型对象上的属性和方法

// 构造函数
function Person(name,age){
    this.name=name
    this.age=age
    this.sayName=function(){
        console.log(`hello,my name is ${this.name}`)
    }
}
// 原型方法
Person.prototype.sayAge=function(){
    console.log(`hello,my age is ${this.age}`)
}
// 创建实例对象
let per1=new Person('jack',12)
per1.sayAge()
per1.sayName()


http://www.kler.cn/a/442987.html

相关文章:

  • 【Notepad++】Notepad++如何删除包含某个字符串所在的行
  • 如何使用datagrip连接spark
  • IDEA搭建springboot demo
  • Qlib专为AI而生的量化投资平台
  • GPT核心原理
  • 模具制造之三维扫描和逆向建模
  • 限制redis内存
  • 【赛博保安】安全日记反弹Shell加密算法信息打点(二)
  • LLM大语言模型私有化部署-OpenEuler22.03SP3上容器化部署Dify与Qwen2.5
  • 【Qt】QWidget中的常见属性及其功能(二)
  • ffmpeg使用方法
  • 穷举vs暴搜vs深搜vs回溯vs剪枝专题一>子集
  • jQuery lightbox插件ViewBox
  • Leetcode打卡:形成目标字符串需要的最少字符串数I
  • Vue.js前端框架教程7:Vue计算属性和moment.js
  • XSLT 编辑 XML
  • Java类
  • 论文笔记-KDD2024-TransRec
  • 【Python爬虫系列】_032.Scrapy_全站爬取
  • 二百七十九、ClickHouse——用Kettle对DWD层清洗数据进行增量补全
  • FastAPI 的进阶应用与扩展技术:异步编程与协程、websocket、celery