博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
一次性理清JavaScript变量等高难度面试问题
阅读量:6785 次
发布时间:2019-06-26

本文共 1309 字,大约阅读时间需要 4 分钟。

主要是解决JavaScript中比较难懂的部分,当然了,这部分经常在面试题中露面,这篇文章主要是讲解解题思路,对新手会有很大帮助(如果你仔细看的话)。书籍方面,我看的是《你不知道的javascript》,精髓就在里面喽。文章会持续更新( 如果能看到比较刁钻的题目的话, 也欢迎大家将自己遇到的
异常难于理解
JavaScript题目分享出来喔 )

第0种 解析顺序

function a() {        b = function () {            console.log(1)        }        return this;    }    var b = function () {        console.log(2)    }    function b() {        console.log(3)    }    b();    a().b();    b();

1.首先,你要明白的是3永远不可能打印出来。这涉及到函数的声明方式和执行顺序问题。

直接用function的方式声明的函数,函数可以在function声明之前被调用,这说明在代码运行之前就已经调用了。
再次声明的函数var b会替代原有的函数b

2.第二点: 第一个函数中的this指向。一个点:函数中的this是在运行时候决定的,而不是函数定义时, 具体就看谁调用了this.在第一个函数中,没有调用对象,在浏览器中,this就指向window

3.第三点: 还是第一个函数中,不使用var标识符直接定义的变量都属于全局变量,也就是说第一个函数中的b是挂载到window上的。

第1种 变量提升

(function(){    a = 5;    alert(window.a);    var a = 10;    alert(a);})();

喜闻乐见!看见一堆的变量a就知道了,这是变量提升的问题了,只需要自己模拟出执行顺序就行了.

等同于:

var  a; // 第一步:变量提升a = 5; // 后面的就直接拿上来alert(window.a);a = 10;alert(a);

同类型题目:

var a=1;function test(){    console.log(a);    var a=1;}test();

看见var就把它提升到最前面就行了,一样画瓢解决:

var a;a = 1;function test() {  var a;  console.log(a);  a = 1;}

还有同类型的题目一样可以依葫芦画瓢解决:

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

等。

解决这些问题的关键是:不要想当然,动手一步一步模拟执行顺序,模拟变量提升情况

第二种 面向对象问题或高阶函数( 等待更新 )

转载地址:http://fydgo.baihongyu.com/

你可能感兴趣的文章
腾讯云答治茜:云计算为独角兽和传统企业提供了哪些沃土?
查看>>
Spark on YARN 部署案例
查看>>
RedHat发布JBoss 7.2,完全支持Java EE 8规范
查看>>
kubernetes1.9.2基于kubeadm的高可用安装HA
查看>>
「性能优化之道」每秒上万并发下的Spring Cloud参数优化实战
查看>>
App启动流程
查看>>
原理 | 分布式链路跟踪组件 SOFATracer 和 Zipkin 模型转换
查看>>
我的第一篇博客
查看>>
手把手教你如何用Python从PDF文件中导出数据(附链接)
查看>>
维珍银河完成最长距离火箭飞行,下一步剑指太空旅行
查看>>
[Python]attributeError:'module' object has no attribute 'dump'
查看>>
Docker系列教程11-使用Nexus管理Docker镜像
查看>>
业界最全,阿里云混合云灾备服务上线!
查看>>
Windows Linux 子系统可以在资源管理器中打开
查看>>
WebStorm文件类型关联设置
查看>>
13.1 Spring MVC 关于controller的字符编码
查看>>
理发店与 App 定价模型
查看>>
ES6(数组)
查看>>
php simplexml_load_file 函数执行不稳定
查看>>
C#,VB.NET如何将Word转换为PDF和Text
查看>>