常考面试题之js预解析 附源码

news/2024/7/19 13:49:18 标签: javascript, js, 前端, 面试, 经验分享

   1.  js引擎运行js 分为两步:  预解析 和 代码执行

        预解析: js引擎会把js 里面所有的 var  还有 function 提升到当前作用域的最前面

        代码执行  按照代码书写的顺序从上往下执行

 

    2. 预解析分为 变量预解析(变量提升) 和 函数预解析(函数提升)

      变量提升 就是把所有的变量声明提升到当前的作用域最前面  不提升赋值操作

      函数提升 就是把所有的函数声明提升到当前作用域的最前面  不调用函数

javascript"><!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>预解析</title>
    <script>

   




        // 1.报错
        console.log(num);



        // 2.
        console.log(num); // undefined  坑 1
        var num = 10;
        // 上面两行代码相当于执行了以下代码
        // var num;
        // console.log(num);  // 输出 undefined 
        
        // num = 10;



        // 3问  
        function fn() {
            console.log(11);
        }
        fn();




        // 4问
        fun(); // 报错  坑2 
        var fun = function() {
                console.log(22);

            }
            // 函数表达式 调用必须写在函数表达式的下面
            // 相当于执行了以下代码
            // var fun;
            // fun();
            // fun = function() {
            //         console.log(22);

        //     }

    </script>
</head>

<body>

</body>

</html>

 


http://www.niftyadmin.cn/n/945155.html

相关文章

Javascript手把手编写 猜数字大小游戏 附源码

猜数字游戏&#xff0c;只有猜对了&#xff0c;才会结束&#xff0c;否则一直循环 1.随机生成一个1~100 的整数 需要用到 Math.random() 方法。 2.需要一直猜到正确为止&#xff0c;所以需要一直循环。 3.while 循环更简单 4.核心算法&#xff1a;使用 if else if 多分支语句…

亚马逊考了25次,字节考了24次的高频面试题 有效的括号 Javascript解法 +源码

如下题 解法 /*** param {string} s* return {boolean}*/ var isValid function(s) {// 遍历字符串长度const n s.length;// 当长度为奇数时&#xff0c;一定无效返回falseif (n % 2 1) {return false;}// 构建一个栈const pairs new Map([[), (],[], [],[}, {]]);const s…

字节考了24次的高频面试题之 链表中倒数第k个节点 Javascript解法 +源码

如下题 题解 /*** Definition for singly-linked list.* function ListNode(val) {* this.val val;* this.next null;* }*/ /*** param {ListNode} head* param {number} k* return {ListNode}*///双指针做法 var getKthFromEnd function(head, k) { //初始化两个指…

学习数据挖掘需要的步骤,算法,及数学原理

1.数据挖掘的过程分成 6 个步骤。 1.商业理解&#xff1a; 从商业的角度理解项目需求&#xff0c;再对数据挖掘的目标进行定义。 2.数据理解&#xff1a; 收集部分数据&#xff0c;对数据进行数据描述、数据质量验证等。有利于对收集的数据有个初步的认知。 3.数据准备&am…

前端未来的发展前景如何?

从疫情暴发到现在&#xff0c;各行各业都开始线上办公&#xff0c;而线上工作就需要有前端后端 从电脑到手机&#xff0c;再到可穿戴设备等一切移动终端都需要有交互式来驱动。 从VR看房、VR装修、AI机器人到手机厂商的智慧大屏都需要前端技术的支持。 如果说以前Web 应用更多…

前端程序员该怎么避免陷入内卷?

原文链接 程序员的职场要有箭头思维。 箭头的方向就是我们发展的方向&#xff0c;箭头的长短就代表了那个方向上的能力大小。 职场的箭头思维&#xff0c;就是把自己和老板都抽象成这样子的箭头。 不要只盯着老板 公司的向量看&#xff0c;其实自己也是个向量&#xff0c;应…

使用JavaScript快慢指针的方法,删除排序数组中的重复项(算法源码)

如题 代码如下图 /*** param {number[]} nums* return {number}*/var removeDuplicates function(nums) {var arr nums.length; //声明一个数组&#xff0c;并存入数组长度 if(arr0){ //若数组nums 的长度为 0&#xff0c;则数组不包含任何元素&#xff0c;返回 0。 return;…

JavaScript双指针法--移除元素,并返回新长度(javascript 算法源码)

如题 代码如下 /**param {number[]} nums param {number} val return {number} */ var removeElement function(nums, val) { //使用双指针法 右指针指向要遍历的元素&#xff0c;左指针指向下一个要赋值的位置var arr nums.length;//声明一个变量&#xff0c;存入数组长度va…