[Day03] 基本型别

上一篇提到 JavaScript 是弱型别语言。

强型别语言在变数被宣告的时候必须指定资料型别给它,如果对变数做了错误型别的运算则会出现错误,优点是能减少在执行时期(Runtime)发生的错误。

而弱型别的 JavaScript 刚好相反,变数本身不带有资料型别的资讯,其中的物件才有。在执行时期透过变数内容来参考至物件,才会知道变数有什麽操作方式。取得语法简洁的优点,但要注意型态转换时产生非预期的问题。

JavaScript 主要有分成基本型别(Primitives)及物件型别(Object)两大类型别。可以用 typeof 运算子来做判断型别的方式。

基本型别Primitives:

  1. string(字串)
    JS 只有字串没有字元的概念,所以要把字串包起来,可以用双引号 "" 或单引号 '',或者 ES6 新增样板字面值(template literal)用反引号 `` 包覆,看个人喜好使用。
var str1 = "Let's go!";// 双引号
var str2 = 'Let\'s go!';// 单引号遇到错误时在前面加\(escape character 跳脱字元)
var str3 = `Let's go!`;// 反引号 
var str4 = "Hello, " + "world.";//用+连接字串
console.log(str4)
Hello, world.

+在字串加上变数:

var age = 25;
var str5 = "I'm " + age + " years old.";
console.log(str5)
I'm 25 years old.

var str6 = `I'm ${age} years old.`;// 用样板字面值加上变数的用法
console.log(str6)
I'm 25 years old.

过去断行与样板字面值的差异

var hello1 = "这不是一行文\n这是第二行\n这是第三行";
console.log('10', hello1)
10 这不是一行文 
这是第二行 
这是第三行

var hello2 = `这不是一行文
这是第二行
这是第三行`;// es6後用反引号可以直接断行
console.log('11', hello2);
11 这不是一行文
这是第二行
这是第三行
  1. number(数字)
    包含整数和带有小数点的浮点数字,还有几个比较特殊的数字 Infinity(无限大)、-Infinity (负无限大)及 NaN (不是数值,Not a Number) 。例:0/0 是 NaN,Infinity/Infinity 也是 NaN 一样的概念,但有趣的是 typeof NaN,会回报 number。
    既然NaN不好判断那怎麽办,可以用 isNaN(value) 来判断
isNaN(NaN); // true
isNaN(123); // false
isNaN("123"); // false, 字串被转成数字
isNaN("NaN"); // true, 转成数字但不是数字

但是用 isNaN(value)这个方法会透过隐含的 Number()转成数字,所以後来会建议用 Number.isNaN(value)来取代,可以参考 MDN 上的差异。

「带有小数点的浮点数字」,是什麽意思呢?
试着输入 0.1+0.2=... 的结果我惊呆了

0.1+0.2=0.30000000000000004
0.1+0.2===0.3; // false 

因为 JS 的 number 是基於 「IEEE 754」二进位浮点算数标准,十进位的小数无法完美的转换成二进位表示,只能用无限循环的位数来趋近於十位数的小数(IEEE 745 规定 24 位数上限),所以会省略一些位数,导致还原时小数不够精准。二进位的世界啊!门外汉的全新体验!

  1. boolean(布林值)
    只有两种,分别是 ture 以及 false。
    通常用在判断式,作为控制程序流程的用途。

  2. null (没有值)
    明确代表此变数没有值。

  3. undefined
    尚未给值, 未定义。

var a = null; // null 
var b; // undefined
// 008 天的举例很清楚的解释两者的区别
  1. symbol(es6新增)

型别先到这边,

下一篇 物件型别


<<:  Day 6 阿里云架设网站-迁移上云端

>>:  Day 6 if else

Day19-Go错误处理(下)

前言 在昨天的文章,带来简单的错误处理运用,今天要带来较为实务上的运 Go 语言本身没有例外处理机制...

【Day 2】Git与Github入门

何谓Git? *说明 : 一套分散式的版本控制系统。 *作用 : 版本控制能够记录档案的内容变化,并...

Day17 购物车 -- 进阶应用

接着在讲一个也是很常用到的功能,优惠!!! 看似人人喜爱的两个字,实际上范围跟方法多到爆炸....,...

第22车厢-模仿大赛—仿IT邦帮忙:Sticky Nav应用篇

本篇介绍固定navBar应用篇—仿IT邦帮忙 每进入iT邦帮忙网站,忍不住都会滑一下卷轴吧?上方h...

[从0到1] C#小乳牛 练成基础程序逻辑 Day 12 - 四大套路 读懂程序码 Sequence

套路程序码的4种方法 | 一步一步来 | DEMO 🐄点此填写今日份随堂测验 ...