[ JS个人笔记 ] 资料型别—DAY1

资料型别

为何需判断型别,其因为电脑在执行时,需先判断资料是何种型别,才可採取运算方式。例如数字123与字串的123的处理方式。

除了基本型别(Primitives)外,剩余的皆为物件型别(Object)

基本型别

number、string、boolean、null、undefined、symbol

undefined vs null

undefined => 变数已宣告,但无赋值null => 指该变数"目前"没有值

null 是基本型别之一,但 typeof null 却得到 object,而非 null!

可用 typeof 来检测值的资料型别(typeof回传都会是字串)

typeof 1234567; // 'number'typeof 'Hello World!'; // 'string'typeof true; // 'boolean'typeof null; // 'object'typeof undefined; // 'undefined'typeof Symbol(); // 'symbol'

常见物件

Object

可使用 new Object() 建立物件

或使用大括号{}直接写入物件与其值(此种方式称 物件实字 Object literal)

物件存取方式可透过 「.」点 或是 [ ]中刮号 进行存取(若物件所引有空白字串或数字,则使用中括号存取)

可使用 in运算子 与 hasOwnProperty() 方法,判断物件的属性是否存在

hasOwnProperty()不会检查物件的原型链(prototype chain),只检查物件本身而 in运算子会继续顺着物件原型链上检查

Array

在 JS 中并没有 Array 这个型别,它一样属于物件,其在记忆体中的位置也不是连续的。

长度由length属性取得,且其属性值可被覆写(字串length则无法覆写),故长度可随时增减,且就算指定索引元素,也无须连续指定

可使用 isArray() 方法判断是否为阵列


Function

函式只是物件的"一种"function 跟物件一样有属性(property)虽然说 function 是物件的子型别,但 typeof function() {} 是得到 function 而非 object
function greet() {  console.log('Hello');}greet.language = 'english';

输入 console.log(greet.language),则是会显示 greet.language 的值
这样的例子说明了,function只是一种特殊的物件,它可以被当作物件来使用。

奇怪总结

null 是基本型别之一,但 typeof null 却得到 object,而非 null!

function 是物件的子型别,但 typeof function() {} 是得到 function 而非 object

NaN 表示是无效的数字,但依旧还是数字,因此在资料型别的检测 typeof NaN 结果就是 number,不要被字面上的意思「不是数字」(not a number)给弄糊涂了。另外,NaN 与任何数字运算都会得到 NaN,并且 NaN 不大于、不小于也不等于任何数字,包含 NaN 它自己。

面试常见题

请问以下 a、b、c、d、e 的型别是?
var a = true;var b = 'undefined';var c = 1;var d = null;var e = NaN;

Ans:boolean / string / number / object / number

请问当使用了 new Number() 建立资料后,此时使用 typeof() 会出现什么型别?
Ans:object

在以下代码中,typeof a和typeof b的值分别是什么:

function foo() { let a = b = 0;a++;return a; } foo();typeof a; typeof b; 

Ans:typeof a是 'undefined'。变数a仅在 foo()範围内宣告,在外部不可用。
typeof b等于'number'。因b无宣告,故b汙染全域变数。


关于作者: 网站小编

码农网专注IT技术教程资源分享平台,学习资源下载网站,58码农网包含计算机技术、网站程序源码下载、编程技术论坛、互联网资源下载等产品服务,提供原创、优质、完整内容的专业码农交流分享平台。

热门文章