1、mouseover和mouseenter的区别
两者都是鼠标移入元素时触发,区别在于mouseenter不支持冒泡行为,mouseover有冒泡行为
2、let和var的区别
let是块级作用域,var是函数级作用域,let只在最近的大括号内有效,var是在最近的函数大括号内有效
let不可以重复声明,var可以且会覆盖之前的声明
var有变量提升,在声明变量前使用会返回undefined,let不存在变量提升,只能在声明之后使用
3、获取一个变量的类型
let param = 111
Object.prototype.toString.call(param) //"[object Number]"
let param = "aaa"
Object.prototype.toString.call(param) //"[object String]"
let param = true
Object.prototype.toString.call(param) //"[object Boolean]"
let param = null
Object.prototype.toString.call(param) //"[object Null]"
let param = undefined
Object.prototype.toString.call(param) //"[object Undefined]"
let param = []
Object.prototype.toString.call(param) //"[object Array]"
let param = {}
Object.prototype.toString.call(param) //"[object Object]"
let param = function(){}
Object.prototype.toString.call(param) //"[object Function]"
4、函数返回值默认是undefined,参数遗漏默认为传入undefined
函数内部无明确返回值时,默认返回的是undefined
function say(){
return //没有明确返回值则默认返回undefined
}
function info(param){
console.log(param)
}
info() //控制台打印undefined
5、nvm切换node版本成功,node -v显示的依然是之前的版本
从vue2.0切换到vue3.0的时候执行yarn dev报错Cannot find module 'worker_threads',原因是node版本过低,我是10.15.0,之后我使用nvm把node更新到15.6.0,然后发现node -v返回的还是10.15.0的版本,这个问题是因为我之前是先安装的node,后安装的nvm,这样导致之前安装的全局node版本不受nvm管理,解决办法就是把之前安装的node删除掉。
执行which node
命令,查看之前的node安装的位置,我的node安装的位置是/usr/local/bin/node
,找到该文件把该文件删除掉,再使用nvm切换node,执行node -v就显示的切换后的node版本了
6、npx的作用
例如执行npm webpack
和npx webpack
,前者是直接到全局找webpack执行,后者是现在项目下的node_modules目录下找webpack,如果没找到再到全局去找
7、?.
的作用
判断一个变量是否为真,如果为真取变量的某个属性值,如果为假则返回false
const username= someValue.user?someValue.user.name:undefined
const username = someValue.user?.name || undefined
//以上两则实现的效果是相同的
网友评论