Javascript 数据类型、数值类型、数据类型转换、一元操作符、二元操作符

1.JS中数据类型

基础数据类型:string、number、boolean、undefined、null
复杂数据类型:object

2.三个开发上的建议

  1. 当你需要新建一个变量并且需要赋值,或者新建一个对象需要为对象的属性赋值时,可以用null
  2. 但判断一个函数的某一个参数是否传入的时候通常使用 === 'undefined'进行判断
  3. 检测某一个值是否存在或者是否为null用 === null 进行判断

3.只有6个值在进行bool类型转换的时候可以转换为false

这6个值为:undefined、null、 +0、-0、’’、NaN 空数据和{}为true

Boolean(undefined)		// false
Boolean(null)			// false
Boolean(+0)				// false
Boolean(-0)				// false
Boolean('')				// false
Boolean(NaN)			// false
Boolean({})				// true

4.数值类型:常规的数字,无穷,NaN

  1. 小数:0.1 + 0.2 != 0.3 原因为js表示数字时是用二进制表示数字的,可以这样计算:
    0.1x10 + 0.2x10 = 3
    3/10 =0.3
    
  2. NaN: not a number 是一个不等于任何数字的数字类型,typeof(NaN)= “number”NaN !== NaN,它是唯一一个不等于它本身的数字
  3. 字符串:本质是一个unicode编码的序列,length属性返回的是unicode编码的长度,一个汉字返回的长度是1
  4. 理论上只有对象(Object)可以使用属性和方法的引用,字符串引用方法时,会先判断表达式是不是对象,若不是对象,就会直接报错,在所有的基本类型中,只有nullundefined不能转换为对象(Object)
  5. 复杂数据类型:object,是由属性和属性的值所组成的无序列表的合集

5.对象和原始类型的区别

  1. 对象有属性
  2. 对象有方法:方法本身是一种特殊的方法
  3. 对象是可以改变的

6.对象的分类

  1. 常用对象:String,Boolean,正则表达式,Object,Number,Function,Array,Date
  2. 内置对象:Global,Math,Json 与其他对象的区别就是,如果使用内置对象的时候是不需要用new操作符的,可以直接使用
  3. 数组对象:Windows,和JS本身运行环境有关系的
  4. 自定义对象:

7.基础数据类型和对象的转化

详细强戳:JavaScript 中数据类型转换

8.变量定义

使用var: 局部变量(作用于是当前的函数),创建的变量不可删除,变量会被提前
不使用var: 全局变量,创建的变量可以删除(windows上面的一个属性),变量不会被提前

9.一元操作符:很高的优先级,仅在. , () []之后

(1)、+、-、前++、后++、前–、后–、!、typeof、void、delete,typeof后面的括号()最好写上,!转换成布尔值;

Boolean(3) == !!(3)			// true
String(3) == 3 + ''			// true
+'123' == Number(123)		// true

delete 运算符删除对以前定义的对象属性或方法的引用。例如:

var o = new Object;
o.name = "David";
alert(o.name);  //输出 "David"
delete o.name;
alert(o.name);  //输出 "undefined"

在这个例子中,删除了 name 属性,意味着强制解除对它的引用,将其设置为 undefined(即创建的未初始化的变量的值)。
delete 运算符不能删除开发者未定义的属性和方法。例如,下面的代码将引发错误:

delete o.toString;

即使 toString 是有效的方法名,这行代码也会引发错误,因为 toString() 方法是原始的 ECMAScript 方法,不是开发者定义的。
一元加法和一元减法
尽管一元加法对数字无作用,但对字符串却有有趣的效果,会把字符串转换成数字。

var sNum = "20";
alert(typeof sNum);     //输出 "string"
var iNum = +sNum;
alert(typeof iNum);     //输出 "number"

(2)、位运算 NOT
位运算 NOT 由否定号(~)表示,它是 ECMAScript 中为数不多的与二进制算术有关的运算符之一。位运算 NOT 实质上是对数字求负,然后减 1,
(3)、逻辑 NOT(!)逻辑 NOT 运算符返回的一定是 Boolean 值。
逻辑 NOT 运算符的行为如下:

  • 如果运算数是对象,返回 false
  • 如果运算数是数字 0,返回 true
  • 如果运算数是 0 以外的任何数字,返回 false
  • 如果运算数是 null,返回 true
  • 如果运算数是 NaN,返回 true
  • 如果运算数是 undefined,返回 true
!{}				// false
!0				// true
!3				// false
!null				// true
!NaN			// true
!undefined		// true

10.二元操作符

&& 、||、+、-、x、/

1.加法运算符

与乘性运算符一样,在处理特殊值时,ECMAScript 中的加法也有一些特殊行为:

1 + NaN = NaN
-Infinity +  -Infinity = Infinity
Infinity +  -Infinity = NaN
+0 + +0 = +0
-0 + +0 = +0
-0 + -0 = -0
undefined + true = NaN
null + false = 0
1 + false = 1
1 + true = 2
{name: '张三'} + {age: 24} = [object Object][object Object]

不过,如果某个运算数是字符串,那么采用下列规则:

  • 如果两个运算数都是字符串,把第二个字符串连接到第一个上。'hello' + 'word' // helloword
  • 如果只有一个运算数是字符串,把另一个运算数转换成字符串,结果是两个字符串连接成的字符串。'hello' + 123 // hello123
  • 注意:为了避免 JavaScript 中的一种常见错误,在使用加法运算符时,一定要仔细检查运算数的数据类型。
2.减法运算符

在处理特殊值时,减法运算符也有一些特殊行为:

console.log(1 - NaN)							// NaN
console.log( Infinity -  Infinity)			// NaN
console.log( -Infinity -  -Infinity)			// NaN
console.log( Infinity -  -Infinity)				// Infinity
console.log( -Infinity -  Infinity)				// -Infinity
console.log(+0 - +0)							// +0
console.log(-0 - -0)							// -0
console.log(+0 - -0)							// +0
console.log('hello' - 12)							// NaN(某个运算符不是数字,也不能强制转化为数字)
3.逻辑 AND 运算符( && ),

逻辑 AND 运算的运算数可以是任何类型的,不止是 Boolean 值。
如果某个运算数不是原始的 Boolean 型值,逻辑 AND 运算并不一定返回 Boolean 值:

  • 如果一个运算数是对象,另一个是 Boolean 值,返回该对象。
  • 如果两个运算数都是对象,返回第二个对象。
  • 如果某个运算数是 null,返回 null。
  • 如果某个运算数是 NaN,返回 NaN。
  • 如果某个运算数是 undefined,返回undefined 。
4.逻辑 OR 运算符( || )

与逻辑 AND 运算符相似,如果某个运算数不是 Boolean 值,逻辑 OR 运算并不一定返回 Boolean 值:

  • 如果一个运算数是对象,并且该对象左边的运算数值均为 false,则返回该对象。
  • 如果两个运算数都是对象,返回第一个对象。
  • 如果最后一个运算数是 null,并且其他运算数值均为 false,则返回 null。
  • 如果最后一个运算数是 NaN,并且其他运算数值均为 false,则返回 NaN。
  • 如果某个运算数是 undefined,则根据另一个运算数返回。
undefined || null								// null
null || undefined								// undefined
undefined || 0								// 0
0 || undefined								// undefined
undefined || 123								// 123
undefined || 'hello'								// 'hello'
5.关系运算符< >

返回的结果是boolean类型,更偏向于数字的操作,任何包含 NaN 的关系运算符都要返回 false

6.等性运算符

ECMAScript 提供了两套等性运算符:等号和非等号用于处理原始值,全等号和非全等号用于处理对象。
=== 全等:数据类型和值完全一致
== 相等:undefined == null,数字,字符串,boolean类型进行比较时,先转换为数字再进行比较,等号和非等号( == , != )

  1. 在 ECMAScript 中,等号由双等号(==)表示,当且仅当两个运算数相等时,它返回
    true。非等号由感叹号加等号(!=)表示,当且仅当两个运算数不相等时,它返回
    true。为确定两个运算数是否相等,这两个运算符都会进行类型转换。 执行类型转换的规则如下:
    • 如果一个运算数是 Boolean 值,在检查相等性之前,把它转换成数字值。false 转换成 0,true 为 1。
    • 如果一个运算数是字符串,另一个是数字,在检查相等性之前,要尝试把字符串转换成数字。
    • 如果一个运算数是对象,另一个是字符串,在检查相等性之前,要尝试把对象转换成字符串。
    • 如果一个运算数是对象,另一个是数字,在检查相等性之前,要尝试把对象转换成数字。
      在比较时,该运算符还遵守下列规则: 值 null 和 undefined 相等。 在检查相等性时,不能把 null 和 undefined 转换成其他值。 如果某个运算数是 NaN,等号将返回 false,非等号将返回 true。
      如果两个运算数都是对象,那么比较的是它们的引用值。如果两个运算数指向同一对象,那么等号返回 true,否则两个运算数不等。
      重要提示: 即使两个数都是 NaN,等号仍然返回 false,因为根据规则,NaN 不等于 NaN。 全等号和非全等号
  2. 全等号由三个等号表示(===),只有在无需类型转换运算数就相等的情况下,才返回 true。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值