每日挑战,从Javascript面试题目了解一些你可能忽略的概念 - Day7

tags: ItIron2021 Javascript

作者碎碎念

没注意到昨天发错文章了..把Day7当Day6发 今天重新补发一次

前言

前三天我们都在讲提升,我相信你一定也厌烦了,别担心,那玩意不会再出现了?
有些比较重要的概念通常会有2~3题的复习机会,若你认为该概念你早就完全摸熟了,通常在前言的部分你可以看到今天的主题,发现已经熟练的就直接跳过就好罗!
今天让我们来看看新的主题吧!

本日题目与解释

请你解释undefined, null & not defined的差别

老样子,来张防雷图让你好好思考一下这个看似奇妙的问题

thinking-cat

这也是个很容易让人觉得好像很简单但却又没办法讲出个所以然的题目,但其实它真的很简单! 首先我们都可以轻易地回答出第一点

  • not defined表示该变数未被定义

比方说你今天随便在你的编辑器上执行以下的程序码,就会看到熟悉的错误讯息罗!

console.log(DannyWang) // Uncaught ReferenceError: DannyWang is not defined

接着就是比较null & undefined的差别了,这个也很单纯,最主要的差别就在於是否被赋值而已!

  • null表示该变数是个空值、undefined则表示该变数虽宣告但未被赋值

null虽然是空值,但还是个值,表示这变数已被宣告、且已被赋值,undefined则清楚的表示这玩意未被赋值,同样看个简单的例子吧!

let dannyWang

console.log(dannyWang) // undefined

但这并不是唯一的差别,他们在变数型别也有所不同

  • When it comes to typeof....
console.log(typeof undefined) // undefined
console.log(typeof null) // object
console.log(typeof WangDanny) // undefined

undefined的型别为undefined、null的型别为object,这两点你可能都不意外,但第三个玩意可能会让你有点惊讶。未定义的变数会被typeof判别为undefined,但实际上这个变数未曾宣告过,这点要多注意,表示你并不能用typeof === 'undefined'去辨别某变数是否被宣告过。

本日核心观念与总结

核心观念

null vs undefined

总结

  • not defined表示该变数未被定义
  • null表示该变数已宣告且已被赋值,只是是个空值
  • undefined表示该变数已宣告但尚未被复值
  • 未定义的变数无法用typeof确认

本文章同步发布於个人部落格,有兴趣的朋友也可以来逛逛~!


<<:  事件处理,延伸学习 function bind(Day 8)

>>:  D21-(9/21)-长荣(2603)-你只要懂海,海就会帮你

Android x Kotlin : EditText与软键盘常见设定

简介 editText有些常用设定,有时候会不小心忽略掉。虽然有些不是必备,但使用者体验的优化还是很...

Day 6 [Python ML] 随机森林(Random Forests)演算法

前言 决策树(DecisionTree)如果leaf太多的话容易overfitting 若leaf太...

Day 30 敏捷开发最後的结果会是什麽?

敏捷开发最後的结果会是什麽? 最後我想跟大家分享一段小故事,故事大约是这样的: 男主角丹,因为车祸的...

Day 26 设定 Redux 环境

第 26 天 ! 今天我们来试着把 redux 的环境建立起来吧, 安装 redux 套件: yar...

007 2021线上看

007 2021线上看 世界局势波诡云谲,再度出山的邦德(丹尼尔·克雷格饰)面临有史以来空前的危机。...