首页IT科技js面试基础知识(js 高频面试题详解)

js面试基础知识(js 高频面试题详解)

时间2025-05-05 13:36:03分类IT科技浏览3320
导读:一:js 中的变量提升 例1...

一:js 中的变量提升

例1

答: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()
声明:本站所有文章            ,如无特殊说明或标注                  ,均为本站原创发布      。任何个人或组织      ,在未征得本站同意时            ,禁止复制                  、盗用      、采集      、发布本站内容到任何网站                  、书籍等各类媒体平台                  。如若本站内容侵犯了原著者的合法权益                  ,可联系我们进行处理            。

创心域SEO版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!

展开全文READ MORE
rank the following assets from(local_rank,rank,node等理解)