您现在的位置是:首页 > 技术学习 > javascript 网站首页 技术学习 javascript
JS中的数据类型
- 技术学习
- 2019-04-10
- 226已阅读
- 0
简介
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,对象
注:
- undefined: 未定义的变量,或未赋值的变量,或不存在的变量属于undefined;
- NaN: 非数字类型,但是NaN属于number,可用isNaN();来判断是否属于非数字。NaN不和任何值相等,包括NaN本身。NaN两个N大写,中间的a小写。
- boolean: 布尔值,我们常说的真假,真为1,假为0。只有这两个值。
- null: 空,属于object,但是判断null == undefined时返回true。判断null === undefined时为false;
- 真与假:
真: 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中 "=" 是用来赋值的,"==" 和 "===" 是进行比较的。
相关文章
- javascript基础
- JS函数前面加!、+、-、~符号以及;是什么意思、按位取反
- JS的内置对象(Date、String、Array、Math、Event)
- 浏览器对象(Window、History、Location、Navigator、Screen)
- DOM对象
- JS事件绑定、冒泡/捕获、常见的兼容处理、委托、阻止默认行为和冒泡
- JS中的正则
- 通过file按钮上传的图片如何在当前页面显示出来 FileReader
- JS、Jquery中jsonp的原理以及使用方法
- JS中新增的对象:Map、Set
- JS生成器 - generator
- JS中的块级作用域,var、let、const三者的区别