每日一题面试题 - 持续更新

周一到周五更新

1、undefined和null的区别-20230614

undefined:

(1)声明了一个变量,但没有赋值

(2)对象属性没有赋值

(3)调用函数没有提供相应的参数

(4)函数没有返回值,默认undefined

(5)undefined 是声明了变量但未对其初始化时赋予该变量的值。 - ECMAScript官网原话

null:

(1)实际就是一个空对象

(2)原型链的终点

(3)null 则用于表示尚未存在的对象,如果函数或方法要返回的是对象,那么找不到该对象时,返回的通常是 null。 ECMAScript官网原话

为什么undefined == null会返回true?

很多人认为是因为它们的布尔值都是false,因为 == 会进行类型转换,所以就会返回true,其实这种说法不是很合理:

----------battle环节----------

与面试官battle的时候直接说:官方文档是这样说的,值 undefined 实际上是从值 null 派生来的,因此 ECMAScript 把它们定义为相等的。

typeof null        // "object" (因为一些以前的原因而不是'null')
typeof undefined   // "undefined"
null == undefined // true
null === undefined // false

2、sessionStorage、localStorage和cookie的区别-20230615

(1)cookie在浏览器和服务器间来回传递,而sessionStorage和localStorage不会自动把数据发送给服务器,仅在本地保存.

(2)存储大小,cookie存储4K,sessionStorage和localStorage最大5M

(3)数据有效期不同

cookie:只在设置的cookie过期时间之前有效,即使窗口关闭或浏览器关闭

sessionStorage:仅在当前浏览器窗口关闭之前有效;

localStorage:始终有效,窗口或浏览器关闭也一直保存,因此用作持久数据;

上面的区别都是必须要跟面试官百分百答出来的,但是有些面试官比较ex,会问

面试官:那同域下多窗口间localStorage能共享吗?

回答:答案是可以的,因为localStorage是持久化数据共享,只有手动清除才会清除数据

下面才是重点戏呀!!!!!!!!1

面试官:localStorage既然可以,那sessionStorage在多窗口之间能共享状态吗?

----------battle环节----------

这个才是重头戏,记住一句话就行了:在该标签或窗口打开一个新页面时会复制顶级浏览会话的上下文作为新会话的上下文。

这句话的意思是,在A页面复制url打开新页面B,B页面的sessionStorage是和A页面一样的,但是如果A页面中修改了sessionStorage,此时的B页面仍然还是旧A的sessionStorage数据,这一点需要注意。所以接下来跟面试官battle。

多窗口之间sessionStorage不可以共享状态!!!但是在某些特定场景下新开的页面会复制之前页面的sessionStorage!!

3、v-modal双向数据绑定-20230616

<input type="text" :value="username" @input="username = $event.target.value" />

----------battle环节---------- -20230619

跟面试battle的时候说:v-modal其实就是一个语法糖,它内部做了两个事情,首先v-bind绑定了一个value,然后触发了@input事件把$event.target.value赋值给了所绑定的value值

4、mvc和mvvm的区别

mvc

M(Model):模型层。是应用程序中用于处理应用程序数据逻辑的部分,模型对象负责在数据库中存取数据;
V(View):视图层。是应用程序中处理数据显示的部分,视图是依据模型数据创建的;
C(Controller):控制层。是应用程序中处理用户交互的部分,控制器接受用户的输入并调用模型和视图去完成用户的需求,控制器本身不输出任何东西和做任何处理。它只是接收请求并决定调用哪个模型构件去处理请求,然后再确定用哪个视图来显示返回的数据。

mvvm

vue框架中MVVM的M就是后端的数据,V就是节点树,VM就是new出来的那个Vue({})对象

M(Model):模型层。就是业务逻辑相关的数据对象,通常从数据库映射而来,我们可以说是与数据库对应的model。
V(View):视图层。就是展现出来的用户界面。
VM(ViewModel):视图模型层。连接view和model的桥梁。因为,Model层中的数据往往是不能直接跟View中的控件一一对应上的,所以,需要再定义一个数据对象专门对应view上的控件。而ViewModel的职责就是把model对象封装成可以显示和接受输入的界面数据对象。

----------battle环节---------- 

mvc和mvvm都是一种设计模式mvvm其实就是mvc的升级版,但是不是替代版,只是将其中的Controller抽离了出来;Model就是模型,就是一个访问数据层,处理数据的,比如ajax,axios这样一个model;然后 View就是视图层,结构,布局,外观,mv就是视图模型,处理m和v之间的关系, View与ViewModel之间通过双向绑定建立联系,这样当View(视图层)变化时,会自动更新到ViewModel(视图模型),mvc单向数据,mvvm是双向数据

mvvm的好处:1、低耦合2、可重用性高3、分层开发,结构分明,便于维护

本文是站在面试的角度去回答,基本都是大白话,但是其中的原理一定一定一定要搞明白,这样与面试官去battle的时候,自己才有十分的自信怼回去。要是有更好的回答可以一起讨论。仅供参考!仅供参考!仅供参考!

猜你喜欢

转载自blog.csdn.net/qq_45838276/article/details/131201528