js_类型

JavaScript类型的介绍和进制

JavaScript和诸如C、C++、JAVA、C# 等强类型程序设计语言不同,它属于弱类型语言,又称为动态类型程序设计语言。

原始的数据类型:number ,string,boolean,undefined,null,object

基本类型:数值(number)、字符串(string)、布尔(boolean)

对象类型:包括数组(array)、函数(function)、对象(object)

类型首字母小写,对象首字母大写

1
2
3
4
5
6
7
//类型首字母小写,对象首字母大写
//基本类型(简单类型),值类型:number,string,boolean
//复杂类型(引用类型):object
//空类型:null,undefined
//值类型的值在哪块空间存储?栈中存储
//引用类型的值在哪块空间中存储?(地址在)栈和(对象在)堆中存储
1
2
3
4
5
6
7
8
9
js中的原始的数据类型:number 、string 、 boolean、 null、 undefined 、 Object
number:数字类型(整数和小数)
string :字符串类型(一般都是单引号或者双引号阔起来的)
boolean:布尔类型(只有两个值,true(真1)、false(假0))
//var sex1=true;//男
// var sex2=false;//女
null:空类型,一个对象指向空了,此时可以赋值为null
undefined:未定义,值只有一个:undefined

获取变量的数据类型:

1
2
1、typeof 变量名
2、typeof(变量名)
1
2
3
4
5
6
7
8
9
10
11
var num=10;//number
var str="ewgr";//string
var flag=true;//boolean
var nll=null;//object,不是null
var undef;//undefined
var obj=new Object();//object
console.log(typeof num);//number
console.log(typeof nll);//object
console.log(String(nll));//null
console.log(10);//蓝色
console.log("20");//黑色
1
2
3
var num;
console.log(num);//undefined
console.log(num+10);//NaN

什么情况下的值为undefined?

1
2
答:变量声明了,但是没有赋值函数没有明确的返回值,如果接收了,结果也是undefined
如果一个变量的值为undefined,它和一个数字进行计算,它的结果为NaN

类型的转换:

其他类型转换为数字类型,有三种方式:

1
2
3
1、parseInt();//转整数
2、parseFloat();//转小数
3、Number();//转数字,比上面的两种方法严格
1
2
3
4
5
6
7
8
console.log(parseInt("10"));//10
console.log(parseInt("1a0"));//1
console.log(parseInt("10a"));//10
console.log(parseInt("g10"));//NaN
console.log(parseInt("1f10"));//1
console.log(parseInt("10.98"));//10
console.log(parseInt("10cdsfd"));//10
1
2
3
4
5
6
7
8
console.log(parseFloat("10"));//10
console.log(parseFloat("1a0"));//1
console.log(parseFloat("10a"));//10
console.log(parseFloat("g10"));//NaN
console.log(parseFloat("1f10"));//1
console.log(parseFloat("10.98"));//10.98
console.log(parseFloat("10cdsfd"));//10
1
2
3
4
5
6
7
8
console.log(Number("10"));//10
console.log(Number("1a0"));//NaN
console.log(Number("10a"));//NaN
console.log(Number("g10"));//NaN
console.log(Number("1f10"));//NaN
console.log(Number("10.98"));//10.98
console.log(Number("10cdsfd"));//NaN

其他类型转换为字符串类型:

1
2
1、.toString()
2、String();
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
var num=10;
console.log(num.toString());//字符串类型
var num2=20;
console.log(num2);
console.log(String(num2));
//如果变量有意义调用.toString()转换
//如果变量无意义使用String()转换
//其他类型转换为布尔类型
//Boolean(值)
console.log(Boolean(1));//true
console.log(Boolean(0));//false
console.log(Boolean(11));//true
console.log(Boolean(-10));//true
console.log(Boolean("呼大睡"));//true
console.log(Boolean(null));//false
console.log(Boolean(""));//false
console.log(Boolean(undefined));//false

number类型:值类型之间的传递的是值,引用类型之间传递的是地址。

数字类型是有范围的,有最大值和最小值
1
2
console.log(Number.MAX_VALUE);//1.7976931348623157e+308
console.log(Number.MIN_VALUE);//5e-324
不要用小数去验证小数
1
2
3
4
5
var x=0.2;
var y=0.1;
var sum=x+y;
console.log(sum);//0.30000000000000004
console.log(sum==0.3);//false

如何验证一个数是不是NaN,应该使用isNaN():如果括号内不是一个数字就返回true

1
2
var num;
console.log((num+10)==NaN);//false
1
2
3
var num;//变量声明了,没有赋值。结果是undefined
console.log(isNaN(num));//true
console.log(isNaN(num+10));//true
1
2
3
var nu;//变量声明了,没有赋值。结果是undefined
document.write(isNaN(nu));//true
console.log(isNaN(nu+10));//true*/

访问的是哪个变量?

1
2
3
4
5
6
function f1(){
x=100;
}
var num=10;
f1(num);
console.log(num);//10
1
2
3
4
5
6
7
8
9
var obj={
name="小明";
};
function f2(obj2){
obj2.name="小红";
}
console.log(obj.name);//小明
f2(obj);
console.log(obj.name);//小红

识别传递的是啥?

1
2
3
4
5
var num1=20;
var num2=num1;
num1=10;
console.log(num1);//10
console.log(num2);//20
1
2
3
4
5
6
7
var num=50;
function f1(num){
num=40;
console.log(num);//40
}
f1(num);
console.log(num);//50

字符串类型:由字母、数字、文字或符号所组成的单词、词组或句子,JavaScript针对字符串提出了string类型,并规定字符串前后必须加上双引号或者单引号,但两者不可混用,如:”生日”、’happy’。若字符串中包含双引号和单引号,则使用反斜杠()后面的字符表示为特殊符号,称为换码字符。

1
2
3
var str="j w j";
//字符串的个数(或者长度)
console.log(str.length);//7

转义字符:

1
2
3
4
5
html中的转义字符:< &lt; >&gt; 空格 &nbsp;
js中的字符串也有转义字符:
tab键---------水平制表符
\t 水平制表符
\\反斜杠
1
2
3
字符串的拼接:可以使用+把多个字符串放在一起组成一个字符串
只要一个是字符串,其他的是数字,使用了拼接符,那么结果也是拼接,不是相加
如果有一个字符串和一个数字相减,此时会发生计算。(浏览器帮助自动把字符传类型转换为数字类型,这种方法叫做隐式转换)

JavaScript六种基本数据类型详解

基本包装类型:本身是基本类型,但是在执行代码的过程中,如果这种类型的变量调用了属性和方法,那么这种类型就不再是基本类型了,而是基本包装类型,变量也不是普通变量了,而是基本包装类型对象。

注意:

1、普通变量不能直接调用属性或者方法
2、对象可以直接调用属性和方法
1
2
3
var str="hello";
str=str.replace("ll","mm");
console.log(str);//hemmo
1
2
var num=10;
console.log(num.toString());//10
如果是一个对象&&true,那么结果是true;如果是true&&对象,那么结果是对象
1
2
3
var flag=new Boolean(false);
var s=flag&&true;
console.log(s);//true
1
2
3
var num=10;
var num2=Number("10");//类型转换,没有new-------类转换------
var num3=new Number("10");//基本包装类型

进制

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
数字类型:整数和小数
num=20;整数
num=38.9;小叔
在js中的所有数字都是number类型
其他语言:
整数类型:int
单精度浮点型:float
双精度浮点型:double
数字:
二进制:遇到2进1
00000001-----------1
00000010----------2
00000011-----------3
八进制:遇到8进1
00000001------------1
00000002-------------2
.
.
.
00000007--------------7
00000010---------------8
00000011---------------9
00000012---------------10
十进制:
1
2
3...
10
十六进制:
00000001
00000002
...
00000009
0000000a---------------10
...
0000000e-----------------14
0000000f-------------------15
00000010---------------16
00000011---------------17
00000012---------------18

js中有那些表示的进制?

1
2
3
var num=10;//十进制
var num2=012;//八进制
var num3=0x123;//十六进制