首页 > 其他分享 >js 高频面试题详解

js 高频面试题详解

时间:2023-03-15 18:44:54浏览次数:29  
标签:面试题 console log js 详解 var foo 声明

一:js 中的变量提升

例1

a = 2;
var a;
console.log(a);

答:2

解析:它会将当前作用域的所有变量的声明提升到程序的顶部,上述代码等价为:

var a;
 a = 2
console.log(a); // 2

例2:

console.log(a);// undefined 
var a = 2;

解析:变量的声明提升到程序的顶部;等价于:

var a;
console.log(a); 
a = 2;

问题:为什么会有变量提升?

其实啊,js和其他语言一样,都要经历编译和执行阶段,而在编译的时候,会搜集所有的变量并且在本作用域内提前声明,而且其他代码都不会改变顺序。

1:作用域:除了函数外,js是没有块级作用域

2:作用域链:内部可以访问外部的变量,但是外部不能访问内部的变量。 注意:如果内部有,优先查找到内部,如果内部没有就查找外部的。

3:js的变量声明:js的变量声明其实大体上可以分为三种:var声明、let与const声明和函数声明。

函数声明与其他声明一起出现的时候,是以谁为准呢?答案就是,函数声明高于一切,毕竟函数是js的第一公民。

所以下面函数的调用会输出谁呢? 答案是  foo

foo();
function foo() {
    console.log('foo');
}
var foo = 2;

那么下面又会输出谁呢?

foo();
 
function foo() {
    console.log('1');
}
 
function foo() {
    console.log('2');
}

答案是: 2  因为有多个函数声明的时候,是由最后面的函数声明来替代前面的。

那下列程序优惠输出什么呢?

foo();
 
var foo = function() {
    console.log('foo');
}

答案是报了Uncaught TypeError: foo is not a function 的异常

例3:

function c(){
var b=2
    function a(){
         console.log(b); // undefind
         var b=3
         console.log(b); // 3
   }
   a()
   console.log(b); // 2
 }
c()

 

标签:面试题,console,log,js,详解,var,foo,声明
From: https://www.cnblogs.com/Live-up-to-your-youth/p/17219601.html

相关文章

  • vue入门篇之Vue.js 组件
    Vue.js组件是该框架最强大的功能之一,能够扩展HTML元素并封装可重用的代码。通过组件系统,我们可以使用独立可复用的小组件来构建大型应用,几乎任何类型的应用的界面都可以......
  • 基础面试题
    软件测试基础总结1软件的生命周期?根据市场需求--制定项目计划--进行需求分析--设计阶段--程序编码--软件测试--运行维护根据线上运行情况以及市场需求制定下......
  • 爬虫介绍、requests模块发送get请求、get请求携带参数、携带请求头、携带cookie、发送
    目录今日内容1爬虫介绍2requests模块发送get请求3get请求携带参数4携带请求头5携带cookie6发送post请求7响应Response8获取二进制数据9解析json#期终架构 -后......
  • js复制文字的方法
    functioncopyText(text){vartextValue=document.createElement('textarea');textValue.setAttribute('readonly','readonly');//设置只读属性防止手机上弹出软键......
  • requirejs:让人迷惑的路径解析
    转:requirejs:让人迷惑的路径解析(~~不错) 接触过requirejs的童鞋可能都知道,无论是通过define来定义模块,还是通过require来加载模块,模块依赖声明都是很重要的一步。而......
  • 百度2024届暑期实习后端算法题详解
    目录一Coding1题目描述解题思路详细代码二Coding2题目描述解题思路详细代码三Coding3题目描述解题思路详细代码这是百度2024届暑期实习后端岗位的第一轮笔试,总共有十五......
  • (转)go context详解
    原文:https://www.cnblogs.com/niuben/p/15110611.html前言平时在Go工程的开发中,几乎所有服务端的默认实现(例如:HTTPServer),都在处理请求时开启了新的 goroutine 进行......
  • LoadRunner——分析图详解(十四)
    《分析图详解》一、RunningVusers图X轴表示运行所用的时间,Y轴表示vuser数,显示在整个运行过程中随着时间的推移,虚拟用户数量是如何变化的,具体描述为:用户是如何增长的......
  • fabricjs方法常用汇总
    官网:http://fabricjs.com/fabricjs为canvas的一个操作插件,功能较为齐全,下面为常用的知识点//1:获得画布上的所有对象:varitems=canvas.getObjects();//2:设置画......
  • 【C】操作符详解
    1.操作符分类:算术操作符移位操作符位操作符赋值操作符单目操作符关系操作符逻辑操作符条件操作符逗号表达式下标引用、函数调用和结构成员2.算术操作符+-*......