【Day3】不可貌相的JS变数型别:基本型别

俗话说:「人不可貌相,海水不可斗量。」就像我们看到郭靖傻不楞登,怎麽知道他武功高强。杨康外表英俊,能言善道,却一肚子坏水。

变数也跟人一样,从外观无法判断内涵。变数本身没有型别,它所装的「值」才有型别。

变数的型别可以分为基本型别 (Primitives)物件型别(Object) 两类。

变数的基本型别有以下5种:

  • 字串(string)
  • 数字(number)
  • 布林(boolean)
  • null
  • undefined

最重要的是,除了以上几种之外,其他都是「物件」。

字串string

字串必须用2个单引号''或是2个双引号包住,二者不可混用。

字串内也可以不放任何字元,称之为空字串。

字串可以使用+号与其他字串连接。

//字串(string),必须要放在''或是""之中
var guoJing = '降龙十八掌'; 

//空字串
var guoJing = '';

//字串连接可以使用+号
var huangRong = '黄蓉'+'打狗棒法';

//两个单引号包覆单引号,会出错
var yangKang = 'He's a bad man';

//改用双引号包覆单引号,就没有问题
var yangKang = "He's a bad man";

数字number

不管是整数还是带有小数点的浮点数在JavaScript中都属於数字这个类型。

//数字(number),玉山有3952公尺
var jadeMountain = 3952;

但是数字number中有几个比较特别的类型:

  • infinity 正的无限大,非0的数字除以0,结果都是infinity,例如 3/0会回传infinity。
  • -infinity 负的无限大,负数除以0,结果都是-infinity,例如-3/0会回传-infinity。
  • NaN 不是个数字,当遇到无法转换为数字的状态,或是无意义的运算,例如0/0,就会回传NaN。而且NaN与任何数字做运算,回传的结果都是NaN。

我们可以使用isNaN()来检查一个变数是不是NaN。

//infinity
console.log(3/0);

//-infinity
console.log(-3/0)

//NaN
console.log(0/0);

//检查是否为NaN
isNaN('降龙十八掌') //NaN

布林值 boolean

boolean只有二种值:true 和 false。主要用在判断式,作为程序流程控制之用。

var real = true;
var fake = false;

var more = (100 > 50);  //true

任何值都可以转为布林值,但我们只要记得会转为false的值就可以了。

以下几种会转为false:false、0、空字串("")、NaN、null以及undefined。

除了上述几种,其他的值皆为true。

试试看用Boolean()函数将值转换为布林值:

Boolean(1);  //true
Boolean(0);  //false
Boolean("");  //false
Boolean(null);  //false

null

null代表「空值」,所以要将一个变数的值清除?可以指定那个变数为null。

//郭靖本来的内力值为100分
var guoJing = 100;
console.log(guoJing);  //100

//郭靖中毒後,一点功力都提不起来,内力值为0
var guoJing = null;
console.log(guoJing);  //null

undefined

undefined指的是变数未经宣告,且没有赋值;或者是有宣告变数,但是没有给定值的状态。

var x;
console.log(x); //undefined

引用许国政先生在《0 陷阱!0 误解!8 天重新认识JavaScript!》为undefined以及null下的注解:

  • undefined代表的是「(此变数)还没有给值,所以不知道是什麽」。
  • null代表的是「(此变数可能曾经有值,可能没有值)现在没有值」

以上就是JavaScript的五种基本型别。


<<:  Day3 - 接案网不是拿来接案的

>>:  AI ninja project [day 3] AI RPA系统--名片前处理篇

JS Library 学习笔记:首先当然来试试 jQuery (二)

//jQuery 使用Id指定 $('#my-div') //jQuery 使用Class指定 $(...

Alpine Linux Porting (一点十?)

为了更理解Alpine initramfs的眉角,今天持续来看一下Alpine的mkinitfs套件...

day23_如何采购 ARM 版本的 Mac 呢

ARM 版本的 MAC 该怎麽买呢? 目前 APPLE Mac 在 2020年发表的 MacBook...

小队快跑 - 如何帮助一枚新鲜的肝走过试用期

恭喜你,要进入带新人的阶段了,其实这个阶段我觉得只要运用Day 4的工作细节拆分,要帮助一个新人完成...

渗透测试基础篇

进入渗透测试篇~ 今天有点忙碌,没甚麽时间废话XD 照惯例,每篇文章都会附上第一篇的文章,让大家了解...