v-for比v-if优先级更高?面试官 回去等通知吧_java if和for哪个占比多

基础学习:

前端最基础的就是 HTML , CSS 和 JavaScript 。

网页设计:HTML和CSS基础知识的学习

HTML是网页内容的载体。内容就是网页制作者放在页面上想要让用户浏览的信息,可以包含文字、图片、视频等。

开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】

CSS样式是表现。就像网页的外衣。比如,标题字体、颜色变化,或为标题加入背景图片、边框等。所有这些用来改变内容外观的东西称之为表现。

动态交互:JavaScript基础的学习

JavaScript是用来实现网页上的特效效果。如:鼠标滑过弹出下拉菜单。或鼠标滑过表格的背景颜色改变。还有焦点新闻(新闻图片)的轮换。可以这么理解,有动画的,有交互的一般都是用JavaScript来实现的。

大厂面试题分享 面试题库

前后端面试题库 (面试必备) 推荐:★★★★★

地址:前端面试题库  web前端面试题库 VS java后端面试题库大全

前言

v-if和v-for哪个优先级更高呢?这是面试官常常问到的一个问题,如果是在三年前,我会毫不犹豫的回答当然是v-for哩,但在3202的今天,如果还这么答,显然是低估了前端技术的日新月异啰。下面我们就来结合编译结果,一探究竟吧。

注意了⚠️,以上问题一般指的是v-for和v-if连用的情况,比如

<div v-for='item in itemList' v-if='item.id === 1' >{{item.name}}</div>
复制代码

剖析

我们都知道,这个v-if是条件渲染,v-for是列表渲染,都是模版语法,叫这名字当然是因为它们只能在Vue的模版当中用啦。

这些模版语法不是Javascript原生的,因此需要经过一个编译的过程,将它们转为render函数。

经历render函数–>虚拟DOM–>真实DOM 这样的过程,呈现到页面当中。

因此,剖析这个问题的关键就是看编译成的render函数

在此有请Vue官方设计的工具,可以让我们实时看到编译成的render函数。

首先介绍下我们的例子,无非就是渲染一个列表

<template>
    <ul>
        <li v-for="item in list" :key="item.id" v-if="item.id === 1"></li>
    </ul>
</template>

<script>
    // 这里省略掉变成响应式的过程,因为vue2 3 写法不一
    
    list:[
        {name:"JetTsang",id:1},
        {name:"juejin",id:2},
        {name:"baidu",id:3},
    ]
    
<script>
复制代码
vue2中的编译结果

在V2当中,会看到如下的render函数

简单解释一下,这里的_c()就是vm.$createElement(),意思是创建一个虚拟的element,就是返回值是VNode。

_l就是renderlist函数,第2个参数是一个回调函数,里面会传入的item。

函数里面的item.id===1不就是v-if里的内容吗?

这里总结一下就是:先走v-for的逻辑,再根据v-if的条件去判断是否渲染li这个元素,如果没命中v-if的条件,则渲染一个注释节点。

ps:注释节点长这样

不难发现,这里多少有点浪费性能了,如果我list里面有好多个,但符合v-if条件的却比较少,这样先循环,在判断的逻辑,编译出来的render函数效率就比较低下。

其实,如果想要在vue2里的实现这样的逻辑,写代码的时候,就会有提示,让我们先过滤掉list里面的数组,再在模版里面使用。

最后

整理面试题,不是让大家去只刷面试题,而是熟悉目前实际面试中常见的考察方式和知识点,做到心中有数,也可以用来自查及完善知识体系。

开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】

《前端基础面试题》,《前端校招面试题精编解析大全》,《前端面试题宝典》,《前端面试题:常用算法》

前端面试题宝典

前端校招面试题详解

端面试题:常用算法》**

[外链图片转存中…(img-H548Chs8-1715796822311)]

[外链图片转存中…(img-w1wAfoB1-1715796822311)]

[外链图片转存中…(img-ezy74Xu0-1715796822312)]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值