• JS中常见算法问题


    JS中常见算法问题

    1. 阐述JS中的变量提升(声明提前)

    答:将所有的变量提升当当前作用域的顶部,赋值留在原地。意味着我们可以在某个变量声明前就使用该变量。
    虽然JS会进行变量提升,但并不会执行真正的初始化过程。
    按值传递:两变量间赋值,或向函数中传递参数时,都是将原变量中的值复制一个副本给对方,修改一方,另一方不受影响。
    引用类型的对象之间相互赋值时,只是将地址赋值给了对方,因此改变原对象中的内容,由于地址并未发生改变,因此也会引发新变量内容的改变。

    2.阐述use strict;的作用

    答:指定浏览器按照严格模式去渲染。优势:强制开发者避免使用未声明的变量。对于老版本的浏览器或者执行引擎会自动忽略该指令。

    3.解释什么是事件冒泡,处理方式

    答:即某个事件不仅会触发当前元素,还会以嵌套顺序传递到父元素中。
    关于事件流:IE提出冒泡流,即由内到外;网景提出了捕获流,即由外向内。
    一个完整的JS事件流,是从window开始,最终回到window的一个过程。
    事件流的三个阶段:1.捕获阶段,2.目标阶段,3.冒泡阶段。

    防止冒泡和捕获:
    w3c的方法是e.stopPropagation(),IE则是使用e.cancelBubble = true
    ```
    function stopBubble(e) { 
        //如果提供了事件对象,则这是一个非IE浏览器 
        if ( e && e.stopPropagation ) {
            //因此它支持W3C的stopPropagation()方法 
            e.stopPropagation();
        } else {
            //否则,我们需要使用IE的方式来取消事件冒泡 
            window.event.cancelBubble = true;
        }    
    }
    ```
    取消默认事件
    w3c的方法是e.preventDefault(),IE则是使用e.returnValue = false;
    ```
    //阻止浏览器的默认行为 
    function stopDefault( e ) { 
        //阻止默认浏览器动作(W3C) 
        if ( e && e.preventDefault ){
            e.preventDefault(); 
        } else {
            //IE中阻止函数器默认动作的方式
            window.event.returnValue = false;
        }     
        return false; 
    }
    ```
    

    4.

  • 相关阅读:
    Java 必看的 Spring 知识汇总
    java与C#的基础语法区别--持续更新
    MQTT协议-MQTT协议解析(MQTT数据包结构)
    MQTT协议-MQTT协议简介及协议原理
    RabbitMQ与AMQP
    JMS、AMQP和MQTT主要特性
    socket 极值数量
    redis.conf详细说明
    Redis 模糊匹配 SearchKeys
    Parallel
  • 原文地址:https://www.cnblogs.com/nanhuaqiushui/p/10520706.html
Copyright © 2020-2023  润新知