您现在的位置是:首页 > 技术学习 > javascript 网站首页 技术学习 javascript

JS中的数据类型

简介 js里面的变量作用是用来存储数据的,js变量是弱类型的。并不像java等语言,在定义变量时需要声明变量类型,一旦变量类型确定,当给这个变量附其他类型的值时会报错。js的变量可以多次赋值,也可以附...

js里面的变量作用是用来存储数据的,js变量是弱类型的。并不像java等语言,在定义变量时需要声明变量类型,一旦变量类型确定,当给这个变量附其他类型的值时会报错。

js的变量可以多次赋值,也可以附不同数据类型的值,但是,根据使用习惯,尽量一个变量只定义一个数据类型。

js里面基本的数据类型有5种。1.数字(number),2.字符串(string),3.布尔值(boolean),4.对象(object),5.未声明或未赋值或不存在的对象(undefined)。还有一种复杂数据类型:object;

1. 查看变量的数据类型typeof

js中查看数据类型的方法:typeof 需要查看的变量或值,或者typeof(需要查看的对象或值)。
(注:typeof全部小写,后面加不加"()"都行)

typeof 可以返回6个类型的值:string、number、function、boolean、object、undefined

var a = 1;
var b = "a";
var c = function(){};
var d = true;
var e = {"name":"hot_cool","age":18};
var f = [1,2,3];
var g;
var h = parseInt("abc");
var i = null;
console.log(typeof(a)); // number,数字
console.log(typeof(b)); // string,字符串
console.log(typeof c);  // function,函数
console.log(typeof d);  // boolean,布尔值
console.log(typeof e);  // object,对象
console.log(typeof f);  // object,对象
console.log(typeof g);  // undefined,未定义或未赋值
console.log(typeof h);  // number,数字
console.log(h);         // NaN,非数字
console.log(typeof i);  // object,对象

注:

  1. undefined: 未定义的变量,或未赋值的变量,或不存在的变量属于undefined;
  2. NaN: 非数字类型,但是NaN属于number,可用isNaN();来判断是否属于非数字。NaN不和任何值相等,包括NaN本身。NaN两个N大写,中间的a小写。
  3. boolean: 布尔值,我们常说的真假,真为1,假为0。只有这两个值。
  4. null: 空,属于object,但是判断null == undefined时返回true。判断null === undefined时为false;
  5. 真与假:
    真: true、非零数字、非空为真、非空对象,这些为真。
    假: false、数字0、空字符串、空对象、undefined,这些为假。

2. 数据类型的转换

2-1 parseInt() 转化为整数类型

parseInt('123abc');     //123 可以将字符串转化为整数
parseInt('001.23');     //1 可以将小数转化为整数。
parseInt(1.23);         //1 可以将小数转化为整数。
// 机制是,从左边起直到遇到第一个不是数字时停止(小数点也停止)。如果没有数字会变NaN

2-2 parseFloat() 转化为小数

parseFloat('1.23abc');     //1.23 
parseFloat('01.23abc');    //1.23
parseFloat('1.23.1');      //1.23
// 从左边起,可以识别一个小数点,可以转化为小数。

2-3 转化的类型

2-3-1 强制转换

parseInt、parseFloat属于强制转换。数学运算符"-"、"*"、"/"也属于强制转换。例:

var a = 10;
var b = '5';
console.log(a - b)  // 5(数学运算,强行转化为number类型进行计算)
console.log(a*b);   // 50(数学运算,强行转化为number类型进行计算)
console.log(a/b);   // 2(数学运算,强行转化为number类型进行计算)
console.log(a + b)  // 105(字符串拼接,没转化,而是进行了字符串拼接)
// 为什么"+"不能转化,因为"+"在js里有两种含义:
    // 1.字符串就拼接。
    // 2.进行运算。
    // 当前这种情况是进行字符串拼接。
2-3-2 隐式转换

用于比较的"=="属于隐式转换,先比较,若类型不同,进行转化,然后再比较。

var a = 5;
var b = "5";
a == b  // 为true; 
a === b   // 为false;"==="为全等判断,不进行转换直接进行比较。不仅值要一样,类型也要一样,

3 运算符

3-1 算数运算符

+、-、*、/、%、~ (加、减、乘、除、取模(即取余)、按位取反(所有正整数的按位取反是其本身+1的负数,所有负整数的按位取反是其本身+1的绝对值,零的按位取反是 -1)

console.log(10%3);   //1 ,10除以3余数为1。
console.log(~0);     // -1;
console.log(~5);     // -6

按位取反原理可参考 按位取反计算原理

 

3-2 赋值运算符

=、+=、-+、*=、/=、%= (等、加等、减等、乘等、除等、模等);

var a = 1;
console.log(a += 2);//输出3;a+=2 相当于a = a + 2;其余运算类似。

3-3 关系运算符

>、<、>=、<=、==、===、!=、!== (!是取反的意思。!=为不等。)

 

3-4 逻辑运算符

&&、||、! (!是非的意思,即取反)。

 

3-5 运算符优先级

括号优先:

var a = 5;
var b = 10;
var c = "2";
console.log(c + (a+b)) //215 ,先算a+b,再拼接字符串215;
console.log(a + (b+c)) //5102,先拼接102,再拼接5102;

注:由上可知,js中 "=" 是用来赋值的,"==" 和 "===" 是进行比较的。

 
个人CSDN博客

Top