JS数据类型
面试官:JavaScript中什么是基本数据类型什么是引用数据类型?以及各个数据类型是如何存储的?⭐⭐⭐⭐⭐
答:
基本数据类型有
Number
String
Boolean
Null
Undefined
Symbol(ES6新增数据类型)
bigInt
引用数据类型统称为Object类型,细分的话有
Object
Array
Date
Function
RegExp
基本数据类型的数据直接存储在栈中;而引用数据类型的数据存储在堆中,每个对象在堆中有一个引用地址。引用类型在栈中会保存他的引用地址,以便快速查找到堆内存中的对象。
顺便提一句,栈内存是自动分配内存的。而堆内存是动态分配内存的,不会自动释放。所以每次使用完对象的时候都要把它设置为null,从而减少无用内存的消耗
为什么typeof null是Object⭐⭐⭐⭐
答:
因为在JavaScript中,不同的对象都是使用二进制存储的,如果二进制前三位都是0的话,系统会判断为是Object类型,而null的二进制全是0,自然也就判断为Object
这个bug是初版本的JavaScript中留下的,扩展一下其他五种标识位:
000 对象
1 整型
010 双精度类型
100字符串
110布尔类型
==和===有什么区别⭐⭐⭐⭐⭐
答:
===是严格意义上的相等,会比较两边的数据类型和值大小
数据类型不同返回false
数据类型相同,但值大小不同,返回false
==是非严格意义上的相等,
两边类型相同,比较大小
两边类型不同,根据下方表格,再进一步进行比较。
Null == Undefined ->true
String == Number ->先将String转为Number,在比较大小
Boolean == Number ->现将Boolean转为Number,在进行比较
Object == String,Number,Symbol -> Object 转化为原始类型
Vue生命周期函数
1、beforeCreate 组件实例被创建之初
执行时组件实例还未创建,一般用于插件开发中执行一些初始化任务
2、created 组件实例已被完全创建
组件初始化完毕,各种数据可以使用,常用于异步数据获取
3、beforeMount 组件挂载之前
未执行渲染,更新,DOM未创建
4、mounted 组件挂载到实例上去之后
初始化创建,DOM已创建,可用于获取访问数据和DOM元素
5、beforeUpdate 组件数据发生变化,更新之前
更新前,可用于获取更新前各种状态
6、updated 组件数据更新之后
更新后,各种状态已是最新
7、beforeDestroy 组件实例销毁前
销毁前,可用于一些定时器或订阅的取消
8、destroyed 组件实例销毁后
v-show和v-if的区别
v-show指令:元素始终被渲染到HTML,它只是简单的伪元素设置css的style属性,当不满足条件的元素被设置style=“display:none”的样,是通过修改元素的的CSS属性(display)来决定实现显示还是隐藏
v-if指令:满足条件是会渲染到html中,不满足条件时是不会渲染到html中的,是通过 *** 纵dom元素来进行切换显示
v-if需要 *** 作dom元素,有更高的切换消耗,v-show只是修改元素的的CSS属性有更高的初始渲染消耗,如果需要非常频繁的切换,建议使用v-show较好,如果在运行时条件很少改变,则使用v-if较好
Vue的双向数据绑定数据双向绑定,即当数据发生变化的时候,视图也就发生变化,当视图发生变化的时候,数据也会跟着同步变化。
在vue里面使用v-model实现双向数据绑定,原理是检测用户输入,把输入的值获取到 ,然后同步更新给页面的元素
MVVM和MVC的区别详解MVVM是Model-View-ViewModel的简写。即模型-视图-视图模型。Model指的是后端传递的数据。View指的是所看到的页面。ViewModel 是mvvm模式的核心,它是连接view和model的桥梁。
它有两个方向:
一是将model转化成view,即将后端传递的数据转化成所看到的页面。实现的方式是:数据绑定。
二是将view转化成model,即将所看到的页面转化成后端的数据。实现的方式是:DOM 事件监听。
这两个方向都实现的,我们称之为数据的双向绑定。
总结:在MVVM的框架下视图和模型是不能直接通信的。它们通过ViewModel来通信,ViewModel通常要实现一个observer观察者,当数据发生变化,ViewModel能够监听到数据的这种变化,然后通知到对应的视图做自动更新,而当用户 *** 作视图,ViewModel也能监听到视图的变化,然后通知数据做改动,这实际上就实现了数据的双向绑定。并且MVVM中的View 和 ViewModel可以互相通信。
MVC是Model-View- Controller的简写。即模型-视图-控制器。M和V指的意思和MVVM中的M和V意思一样。C即Controller指的是页面业务逻辑。使用MVC的目的就是将M和V的代码分离。MVC是单向通信。也就是View跟Model,必须通过Controller来承上启下。MVC和MVVM的区别并不是VM完全取代了C,ViewModel存在目的在于抽离Controller中展示的业务逻辑,而不是替代Controller,其它视图 *** 作业务等还是应该放在Controller中实现。也就是说MVVM实现的是业务逻辑组件的重用。
vue,通过数据的双向绑定,v变化m也变化,反之亦然
MVVM比mvc精简 解决了数据频繁更新问题 不用再 *** 作DOM
最大的区别是实现了view和model的自动同步
原型、构造函数、实例三者关系关系:
每个构造函数都有一个原型属性prototype,它指向原型对象
原型对象都包含一个指向构造函数的指针(constructor)
而实例都包含一个指向原型对象的内置指针(__ proto__)
function Person(){ } //构造函数
Person.prototype.name = "bree"; //在构造函数的原型对象上添加属性
Person.prototype.isName = function(){
alert(this.name)
}
var bree = new Person(); //调用构造函数创建的实例bree
console.log(bree.__proto__ === Person.prototype); //true
console.log(Person.prototype.constructor === Person); //true
CSS盒模型是什么
width/height:内容的宽高padding:内边距border:边框margin:外边框 html中的div标签和p标签的语义区别div:框架布局
在网页中框架布局一般使用DIV布局,无论大小DIV盒子一般均使用DIV标签( )布局。
p:段落 结束时使用
一般文章段落都是使用p标签,即每段文字开始时候使用
1 父传子
2 子传父
3 非父子传值
父组件:
子组件:
{{inputName}}
父组件:
{{name}}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)