美文网首页
ryf js 教程笔记-数值

ryf js 教程笔记-数值

作者: Maolpha | 来源:发表于2018-12-14 12:46 被阅读0次

1.typeof

// 错误的写法
if (v) {
  // ...
}
// ReferenceError: v is not defined

// 正确的写法
if (typeof v === "undefined") {
  // ...
}
typeof window // "object"
typeof {} // "object"
typeof [] // "object"
typeof null // "object"

但是 instanceof 可以将数组区分出来
:
var o = {};
var a = [];

o instanceof Array // false
a instanceof Array // true

2.nullundefined==关系,但是null可以理解为空值,undefined理解为未定义.

3.null可以转换成0,而undefined就不行

Number(null) // 0
5 + null // 5

Number(undefined) // NaN
5 + undefined // NaN

4.布尔值转换时,除了undefined,null,false,0,NaN,""(空字符串),''(空字符串)会表示为false,其他都是true.
是的,空数组([]),空对象({})都是true.
5.js 中都是浮点数,不会很精确,所以计算时会出现下面的情况,小数计算尤其要注意

(0.3 - 0.2) === (0.2 - 0.1)
// false

5.js 浮点数在-253~253之间都可以精确表示,超过这个范围就开始智障.

math.pow(2,53)
//即2^53=9007199254740992
math.pow(2,53)-1
//9007199254740991
但是
math.pow(2,53)+1
//9007199254740992,而不是9007199254740993
//因为超出范围了

Math.pow(2, 53) + 2
// 9007199254740994

Math.pow(2, 53) + 3
// 9007199254740996

Math.pow(2, 53) + 4
// 9007199254740996

Math.pow(2, 53)
// 9007199254740992

// 多出的三个有效数字,将无法保存

9007199254740992111
// 9007199254740992000

如果一个数大于等于了2^1024,则会正向溢出.
Math.pow(2, 1024) // Infinity

如果一个数小于等于2^(-1024),则会负向溢出.
Math.pow(2, -1075) // 0

6.正零和负零

-0 === +0 // true
0 === -0 // true
0 === +0 // true
+0 // 0
-0 // 0
(-0).toString() // '0'
(+0).toString() // '0'

(1 / +0) === (1 / -0) // false

7.NaN

5 - 'x' // NaN
Math.acos(2) // NaN
Math.log(-1) // NaN
Math.sqrt(-1) // NaN
0 / 0 // NaN
但是
typeof NaN // 'number'
NaN === NaN // false

8.infinity

// 场景一
Math.pow(2, 1024)
// Infinity

// 场景二
0 / 0 // NaN
1 / 0 // Infinity

//四则运算
5 * Infinity // Infinity
5 - Infinity // -Infinity
Infinity / 5 // Infinity
5 / Infinity // 0
0 * Infinity // NaN
0 / Infinity // 0
Infinity / 0 // Infinity
Infinity + Infinity // Infinity
Infinity * Infinity // Infinity
Infinity - Infinity // NaN
Infinity / Infinity // NaN
null * Infinity // NaN
null / Infinity // 0
Infinity / null // Infinity
undefined + Infinity // NaN
undefined - Infinity // NaN
undefined * Infinity // NaN
undefined / Infinity // NaN
Infinity / undefined // NaN

Infinity大于一切数值(除了NaN),-Infinity小于一切数值(除了NaN)。InfinityNaN比较,总是返回false。

Infinity > 1000 // true
-Infinity < -1000 // true

9.parseInt()字符串转换成整数.

parseInt('   81') // 81,自动去除空格
parseInt(1.23) // 1,这里面是数值,会先转换成字符串,再转换成整数

10.字符串可以用单引号或双引号'abc'"abc",单引号字符串内部可用双引号,双引号字符串内部可用单引号.
单引号字符串内加单引号需要用到转义的反斜杠\'Did she say \'Hello\'?'
html 属性用双引号, js 字符串用单引号.
字符串只能写在一行内,中间换行会报错:// SyntaxError: Unexpected token ILLEGAL如果必须分行,则每行末尾需加上\.

var longString = 'Long \
long \
long \
string';

longString
// "Long long long string"

或者用+拆一个长字符串为多个单行字符串.

var longString = 'Long '
  + 'long '
  + 'long '
  + 'string';

11.转义,以下是常见的,还有些数字的转义,看着头大,决定不管了
\0 :null(\u0000
\b:后退键(\u0008
\f:换页符(\u000C
\n:换行符(\u000A
\r:回车键(\u000D
\t:制表符(\u0009
\v:垂直制表符(\u000B
\':单引号(\u0027
\":双引号(\u0022
\\ :反斜杠(\u005C
在非特殊字符前面用\\会被忽略,如'\a'会变成"a"
12.字符串可视为数组

var s = 'hello';
s[0] // "h"
s[1] // "e"
s[4] // "o"

// 直接对字符串使用方括号运算符
'hello'[1] // "e"

但是,字符串与数组的相似性仅此而已。实际上,无法改变字符串之中的单个字符。

var s = 'hello';

delete s[0];
s // "hello"

s[1] = 'a';
s // "hello"

s[5] = '!';
s // "hello"

13.对象[对象就是一组'键值对(key-value)'的集合]

var obj = {    //obj 是对象
  foo: 'Hello',    //foo 是键名,字符串是键值
  bar: 'World'
};

键名可以是数值,但是数值会被自动转成字符串.

var obj = {
  1: 'a',
  3.2: 'b',
  1e2: true,
  1e-2: true,
  .234: true,
  0xFF: true
};

obj
// Object {
//   1: "a",
//   3.2: "b",
//   100: true,
//   0.01: true,
//   0.234: true,
//   255: true
// }

obj['100'] // true

如果是不符合明明规定的名称,则需要加上引号

// 报错
var obj = {
  1p: 'Hello World'
};

// 不报错
var obj = {
  '1p': 'Hello World',
  'h w': 'Hello World',
  'p+q': 'Hello World'
};

键名也叫属性,如果属性的值为函数,则这个属性被称为方法.属性之间可以用逗号隔开

var obj = {
  p: function (x) {
    return 2 * x;
  }
};

obj.p(1) // 2

14.属性读取的两种格式

var obj = {
  p: 'Hello World'
};

obj.p // "Hello World"
obj['p'] // "Hello World",必须加引号,不然会被当做变量

相关文章

  • ryf js 教程笔记-数值

    1.typeof 2.null和undefined是==关系,但是null可以理解为空值,undefined理解为...

  • ryf js 教程笔记-基本语法

    1.CHROME 的 console中,shift+enter 是代码换行. 2.语句,用;表示结尾,如果是;;;...

  • node.js OSX安装~

    根据node.js教程学习node.js遇到的问题及笔记O(∩_∩)O~ 官方网址 *** nvm:https:/...

  • RYF javascript笔记1

    标签: 我的笔记 ---学习资料:http://javascript.ruanyifeng.com/ 1. 导论 ...

  • RYF javascript笔记2

    3. 标准库 3.1Object对象 3.1.1概述 js提供一个Object对象,所有其他对象都继承自它。Obj...

  • RYF javascript笔记3

    4. 面向对象编程 4.1面向对象编程概述 4.1.1简介 4.1.1.1构造函数 js没有“类”,而改用构造函数...

  • RYF javascript笔记4

    5. DOM 5.1document对象 5.1.1DOM的含义 文档对象模型(Document Object M...

  • RYF javascript笔记5

    6 浏览器对象 6.1 浏览器对象 6.1.1JavaScript代码嵌入网页的方法 6.1.1.1直接添加代码块...

  • RYF javascript笔记6

    7 HTML网页的API 7.1 HTML网页元素 略 7.2 Canvas Canvas API(画布)用于在网...

  • JS数值

    数值 100 整型 3.14 浮点型 3.14e7 科学计数法 0xfa1b 16进制 在数值中除了加减乘除求余外...

网友评论

      本文标题:ryf js 教程笔记-数值

      本文链接:https://www.haomeiwen.com/subject/ocfpaftx.html