[C1进阶之路 JS基础] 常见的内置函数

[C1进阶之路 JS基础] 常见的内置函数,第1张


隐式类型转换 ⚔️ 任务目标⚔️ 任务背景⚔️ 任务内容🔰 isNaN🔰 eval🔰 parseFloat🔰 parseInt ⚔️ 刷题练习✏️ 题目1✏️ 题目2✏️ 题目3✏️ 题目4


⚔️ 任务目标

理解并掌握JavaScript中常见的内置函数


⚔️ 任务背景

  JavaScript是一个基于原型链的面向对象的语言,很多其他语言常见的函数会以对象上的各种方法存在,例如数组对象的各种方法,字符串对象的各种方法等。即便如此,JavaScript还是有一些顶层的内置函数,了解这些常见的内置函数对我们进行JavaScript编码有很大的帮助。


⚔️ 任务内容
🔰 isNaN

用来确定一个值是否为NaN。NaN表示不是一个数字。如果isNaN函数的参数不是Number类型, isNaN函数会首先尝试将这个参数转换为数值,然后才会对转换后的结果是否是NaN进行判断。因此,对于能被强制转换为有效的非NaN数值来说(空字符串和布尔值分别会被强制转换为数值0和1),返回false值也许会让人感觉莫名其妙。比如说,空字符串就明显“不是数值(not a number)”。这种怪异行为起源于:"不是数值(not a number)"在基于IEEE-754数值的浮点计算体制中代表了一种特定的含义。isNaN函数其实等同于回答了这样一个问题:被测试的值在被强制转换成数值时会不会返回IEEE-754​中所谓的“不是数值(not a number)”。

isNaN('abc') // 返回值:true 因为字符串'abc'不是一个数字 
isNaN('12.23') // 返回值:false 因为字符串'12.23'是一个数字 

isNaN(NaN);       // true
isNaN(undefined); // true
isNaN({});        // true

isNaN(true);      // false
isNaN(null);      // false
isNaN(37);        // false

// strings
isNaN("37");      // false: 可以被转换成数值37
isNaN("37.37");   // false: 可以被转换成数值37.37
isNaN("37,5");    // true
isNaN('123ABC');  // true:  parseInt("123ABC")的结果是 123, 但是Number("123ABC")结果是 NaN
isNaN("");        // false: 空字符串被转换成0
isNaN(" ");       // false: 包含空格的字符串被转换成0

// dates
isNaN(new Date());                // false
isNaN(new Date().toString());     // true

isNaN("blabla")   // true: "blabla"不能转换成数值
                  // 转换成数值失败, 返回NaN

🔰 eval

eval函数会将传入的字符串当做 JavaScript 代码进行执行。这是一个十分危险的函数,一般情况不建议使用。

	var a = eval("2+2") 
	console.log(a) 
	// 预期输出:4 
	// 这里eval把字符串"2+2",当成js代码执行,得到结果4 
	
	eval("console.log('hello world')") 
	// 预期输出:hello world 
	// 这里eval把字符串"console.log('hello world')",当成js代码执行,打印输出:hello world

🔰 parseFloat

根据给定的参数返回其对应的浮点数。

parseFloat(3.14); 
parseFloat('3.14'); 
parseFloat(' 3.14 '); 
parseFloat('314e-2'); 
parseFloat('0.0314E+2'); 
parseFloat('3.14some non-digit characters'); 
// 以上的返回值都是3.14

🔰 parseInt

解析一个字符串并返回指定基数的十进制整数。

parseInt("0xF", 16); 
parseInt("F", 16); 
parseInt("17", 8); 
parseInt(021, 8); 
parseInt("015", 10); // parseInt(015, 8); 返回 13 parseInt(15.99, 10); 
parseInt("15,123", 10); 
parseInt("FXX123", 16); 
parseInt("1111", 2); 
parseInt("15 * 3", 10); 
parseInt("15e2", 10); 
parseInt("15px", 10); 
parseInt("12", 13); // 以上都返回15,第二个参数表示基数(可以理解为进制)

⚔️ 刷题练习 ✏️ 题目1

要想以下JavaScript代码运行符合预期,空格处应该填什么?

if (isNaN('.67') === ___) { 
    console.log('hello') 
} 

预期输出: 
hello 

💎  false


✏️ 题目2

要想以下JavaScript代码运行符合预期,空格处应该填什么整数?

console.log(parseInt("21", ____))
预期输出: 
17

💎  8


✏️ 题目3

以下的JavaScript代码的预期输出是?

console.log(parseFloat('8.9a89bd'))
预期输出:
____

💎  8.9


✏️ 题目4

以下的JavaScript代码的预期输出是?

if (isNaN('3e4') === false) {
    console.log('Hello')
} else {
    console.log('World')
}

预期输出: 
____

💎  Hello


需知:资料来源于C1认证

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1319691.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-11
下一篇 2022-06-11

发表评论

登录后才能评论

评论列表(0条)

保存