前端之JavaScript面向对象开发(10)

1.数据类型

6 种简单数据类型(原始类型):Undefined、Null、Boolean、Number、 String 和 Symbol。

Symbol(符号)是 ECMAScript 6 新增的

2.typeof 操作符

  1. "undefined"表示值未定义;
  2.  "boolean"表示值为布尔值;
  3.  "string"表示值为字符串;
  4.  "number"表示值为数值;
  5.  "object"表示值为对象(而不是函数)或 null; 
  6. "function"表示值为函数;
  7.  "symbol"表示值为符号。
let message = "designbyly"; 
console.log(typeof message); // "string" 
console.log(typeof(message)); // "string" 
console.log(typeof 1314); // "number"

注意:调用typeof null 返回的是"object"。这是因为特殊值 null 被认为是一个对空对象的引用。

有必要通过 typeof 操作符来区分函数和其他对象。

3.Undefined 类型

let message; 
console.log(message == undefined); // true 
let message = undefined; 
console.log(message == undefined); // true

备注:永远不用显式地给某个变量设置 undefined 值。

包含 undefined 值的变量跟未定义变量是有区别的。

let message; // 这个变量被声明了,只是值为 undefined 
// 确保没有声明过这个变量
// let age 
console.log(message); // "undefined" 
console.log(age); // 报错

对未声明的变量调用 delete 也不会报错,但这个操作没什么用, 实际上在严格模式下会抛出错误。

let message; // 这个变量被声明了,只是值为 undefined 
// 确保没有声明过这个变量
// let age 
console.log(typeof message); // "undefined" 
console.log(typeof age); // "undefined"

即使未初始化的变量会被自动赋予 undefined 值,但我们仍然建议在声明变量的 同时进行初始化.

4.Null 类型

Null 类型同样只有一个值,即特殊值 null

let juzi = null; 
console.log(typeof juzi); // "object" 
console.log(null == undefined); // true 

5.Boolean 类型

Boolean(布尔值)有两个字面值:true 和 false。

两个布尔值不同于数值,因此 true 不等于 1,false 不等于 0

let message = "designbyly"; 
let messageAsBoolean = Boolean(message);

 

let message = "designbyly"; 
if (message) { 
 console.log("true"); 
} 

6.Number 类型

Number 类型使用 IEEE 754 格式表示整 数和浮点值.

let Num1 = 070; // 八进制的 56 
let Num2 = 079; // 无效的八进制值,当成 79 处理
let Num3 = 08; // 无效的八进制值,当成 8 处理
let Num1 = 0xA; // 十六进制 10 
let Num2 = 0x1f; // 十六进制 31 
let Num1 = 1.1; 
let Num2 = 0.1; 
let Num3 = .1; // 有效,但不推荐
let Num1 = 1.; // 小数点后面没有数字,当成整数 1 处理
let Num2 = 10.0; // 小数点后面是零,当成整数 10 处理
let Num = 3.125e7; // 等于 31250000 
if (a + b == 0.8) { // 别这么干! 
 console.log("0.8"); 
} 

       可以表示的最小 数值保存在 Number.MIN_VALUE 中,这个值在多数浏览器中是 5e324;可以表示的最大数值保存在 Number.MAX_VALUE 中,这个值在多数浏览器中是 1.797 693 134 862 315 7e+308。

 6.1 Infinity(无 穷)值。

任何无法表示的负数以-Infinity(负无穷大)表示,

任何无法表示的正数以 Infinity(正 无穷大)表示。

let result = Number.MAX_VALUE + Number.MAX_VALUE; 
console.log(isFinite(result)); // false

在 ECMAScript 中,0、+0 或0 相除会返回 NaN

console.log(0/0); // NaN 
console.log(-0/+0); // NaN 
console.log(6/0); // Infinity 
console.log(6/-0); // -Infinity
console.log(NaN == NaN); // false 
console.log(isNaN(NaN)); // true 
console.log(isNaN(100)); // false,100 是数值
console.log(isNaN("100")); // false,可以转换为数值 100 
console.log(isNaN("orange")); // true,不可以转换为数值
console.log(isNaN(true)); // false,可以转换为数值 1 

Number()函数基于如下规则执行转换。

  1.  布尔值,true 转换为 1,false 转换为 0。
  2.  数值,直接返回。
  3.  null,返回 0。
  4.  undefined,返回 NaN。

6.2 字符串,应用以下规则

  1.  如果字符串包含数值字符,包括数值字符前面带加、减号的情况,则转换为一个十进制数值。 因此,Number("1")返回 1,Number("123")返回 123,Number("011")返回 11(忽略前面 的零)。
  2.  如果字符串包含有效的浮点值格式如"1.1",则会转换为相应的浮点值(同样,忽略前面的零)。   
  3. 如果字符串包含有效的十六进制格式如"0xf",则会转换为与该十六进制值对应的十进制整 数值。  
  4. 如果是空字符串(不包含字符),则返回 0。
  5.  如果字符串包含除上述情况之外的其他字符,则返回 NaN
let num1 = Number("Hello world!"); // NaN 
let num2 = Number(""); // 0 
let num3 = Number("000011"); // 11 
let num4 = Number(true); // 1 
let num1 = parseInt("1234juzi"); // 1234 
let num2 = parseInt(""); // NaN 
let num3 = parseInt("0xA"); // 10,解释为十六进制整数
let num4 = parseInt(22.23); // 22 
let num5 = parseInt("70"); // 70,解释为十进制值
let num6 = parseInt("0xf"); // 15,解释为十六进制整数
let num1 = parseInt("10", 2); // 2,按二进制解析
let num2 = parseInt("10", 8); // 8,按八进制解析
let num3 = parseInt("10", 10); // 10,按十进制解析
let num4 = parseInt("10", 16); // 16,按十六进制解析
let num1 = parseInt("AF", 16); // 175 
let num2 = parseInt("AF"); // NaN
let num1 = parseFloat("1234blue"); // 1234,按整数解析
let num2 = parseFloat("0xA"); // 0 
let num3 = parseFloat("22.5"); // 22.5 
let num4 = parseFloat("22.34.5"); // 22.34 
let num5 = parseFloat("0908.5"); // 908.5 
let num6 = parseFloat("3.125e7"); // 31250000

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

全栈工程师MrL

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值