js数据类型

允我心安 提交于 2019-12-17 05:58:01

1.js数据类型
六大类,5个基本数据类型,1个复杂类型(对象类型,引用类型)
5个基本数据类型:Number,String,Boolean,null,undefined
复杂类型Object(object,function,array)
1.1 number
//1.Number
var n1 = 10;
var n2 = 5.5;

//typeof:检测变量数据类型
console.log(typeof (n1)); //number
console.log(typeof n2);// number

var n3 = 057; //0开头,并且没有超过8的数,8进制
console.log(n3); //47

var n4 = 0x11; //0x开头,十六进制 0-9 a b c d e f
console.log(n4);//17

var n5 = NaN; //not a number 不是一个数字
console.log(10*“a”);//NaN 运算发生错误的时候会得到一个NaN
console.log(NaN==NaN); //false

//有些小数在运算的过程中,可以会出现偏差,小数不要做为判断条件
console.log(0.1+0.2); //0.30000000000000004
console.log(0.1+0.2 == 0.3); //false

1.2 string
//2.String:字符串 引号引起来的都是字符串 “” ‘’
var s1 = “str”;
var s2 = ‘1234’;
console.log(typeof s1,typeof s2); //string string

var passWord = “13145672345”;
//2.1 length:获取字符串中字符的长度
var l = passWord.length;
console.log(l);
//2.2 charAt():获取对应位置的字符串 下标从0开始
console.log(passWord.charAt(0));

1.3 Boolean
//3.Boolean:true false 1.作为判断条件 2,作为判断结果
var b1 = true;
var b2 = false;
console.log(10>20);

1.4.null undefined
//一般情况下,如果出现了null和undefined说明代码出现了问题
var a;
console.log(a); // undefined 声明了变量,但是没有赋值,变量没有初始化,表示值的空缺
var b = null; //值为空
console.log(document.getElementById(“text”)); //null

1.null和undefined的区别?
undefined:访问一个没有被初始化的变量返回的值,空变量
null:访问一个不存在的对象返回的值,空对象

1.5复杂类型object,array,function
var oDiv = document.getElementById(“box”);
console.log(typeof oDiv); //object
console.log(typeof document); //object
console.log(typeof window); //object

//1.object json形式的对象
var obj = {
“sex”:“女”,
“age”:18,
“height”:“165”
}
console.log(obj);
console.log(obj.height);

//2.array 数组:存储数据,存储任意类型数据
var arr = [1,2,true,null,“f”];
//length:计算数组的个数
console.log(arr.length);
console.log(arr[1]); //通过下标获取元素, 从0开始

//3.function:函数 用来保存代码块,在需要的时候调用
//3.1 声明函数 function 函数名(){ 保存的代码 }
//3.2 调用函数 函数名()
function suibian(){
console.log(“随便,都可以”);
}

suibian();
suibian();

1.6 数据类型的划分标准

引用类型存储在堆中,引用类型的变量名中存储的是内存地址
var arr = [1,2,3];
var arr1 = arr; //赋值的arr的内存地址
arr1.push(4); //在数组末尾添加一个值
console.log(arr1); //[1, 2, 3, 4]
console.log(arr); //[1, 2, 3, 4]
上面代码中,arr1=arr;是arr将他的内存地址复制给arr1,
Arr1.push(4),arr1通过内存地址,找到数组存放的那块区域,将4添加在数组的末尾
console.log(arr); //[1, 2, 3, 4],因为现在共用的同一块地址,arr的值也时1234

2.数据类型的强制转换
2.1转number
var n = 11;
var s = “10”;
var b = true;
var nu = null;
var u; //undefined
//1.Number(要转换的值),之前的变量不会改变类型,
console.log(Number(n)); //11
var ss = Number(s); //转换为number类型的10
console.log(ss); //10
console.log(s); //“10”
console.log(Number(b)); //true—1 false----0
console.log(Number(nu)); //0
console.log(Number(u)); //NaN

console.log(Number("")); //0
console.log(Number(“12px”)); //NaN
//注意:Number可以转换,boolean,null,字符串("" 纯数字字符),其他的都是NaN

//2.parseInt :强制转换为Number,取整(舍弃掉小数部分)
//3.parseFloat:强制转换为Number,保留小数部分
console.log(parseInt(“12px”)); //12
console.log(parseInt(“12.5px”)); //12
console.log(parseFloat(“12.5px”)); //12.5

//从左往右转换,直到结束或者遇到不能转换的值为止
console.log(parseInt(“a123”));//NaN
console.log(parseInt(“12a3”));//12

//parseInt(string(要转换的内容),radix(基数)) 2-36 默认10机制
console.log(parseInt(“1110”,8)); //

2.2转string
//String(转换的值)
var n = 10;
var s = “1”;
var b = false;
var nu = null;
var u ;
console.log(String(n)); //“10”
console.log(String(b),b);//“false” false
console.log(String(nu)); //“null”
console.log(String(u)); //“undefined”

    //变量.toString(radix)  2-36
    console.log(n.toString());
    console.log(b.toString());

// console.log(nu.toString()); 没有这个方法
// console.log(u.toString());

    console.log(n.toString(8));

3 isNaN
//isNaN : is not a number :不是一个数字,检测一个变量是否是数字,返回布尔值
// 转换之前,会先使用Number方法进行转换,是数字:false 不是数字true
console.log(isNaN(12)); //false
console.log(isNaN(“12.5”)); //false
console.log(isNaN(“12.5px”)); //true

3.运算符
//1.算术运算符 + - * / %(求模) ++自加 --自减
console.log(10/4);//2.5
console.log(10%4);//2

var a = 10;
//a++;
//++a;
//在赋值或者打印的时候,++在前,先自加,后赋值或打印,++在后,先赋值或打印,再自加
console.log(++a);

var a = 10;
var b = a++ + ++a + a++; //b = 10 + 12 + 12 =34 a = 13
var c = ++a + ++b + b++; //c = 14 + 35 + 35 =84 a = 14 b=36
console.log(a,b,c);//a=14 b=36 c=84

var x = 1;
var y = 1;
x++;
++y;

var s = ++x + ++y + y++; //s =3 + 3 + 3=9 x = 3 y=4
console.log(x++,y,s);//x = 3 y = 4 s = 9

//2.赋值运算符 = += -= *= /= %=
var x = 10;
x += 3; // x = x + 3; 累加

//3.比较运算符 > < >= <= 相等 != 不相等 === 恒等 全等 !
console.log(“10000”>“2”);//false 字符串是一位一位比的,比较的是编

console.log(“10”==10);//true 只要数值一样就可以 “10”—>10
console.log(“10”===10); //false 值和类型必须都一样才相等

4.逻辑运算符
//4.逻辑运算符 && || !
var s = 60;
console.log(s>=70 && s<=100); //连接两个判断条件,两真为真

var s3 = 90;
console.log(s3<60 || s3>100);//连接两个判断条件,一真为真

//true-false/ 非0为真
var s4 = 1 && 0; //两真为真,如果第一个条件为真,再去判断第二个条件,第一个为假,就不会再去判断第二条件
console.log(s4); //0

var s5 = 0 && 1;
console.log(s5);//0

var s6 = (0 && 2);
console.log(s6); //1 2

//一真为真,如果第一个条件为真,第二条件就不会去看,第一个为假,再去判断第二个
var t1 = 1 || 2;
console.log(t1);//1

var t2 = 0 || 2;
console.log(t2);//2

var t3 = 0 || false;
console.log(t3);//false

//!非 取反 false true
console.log(!(10>20)) ;//!false =true
console.log(!0) ;//true
console.log(!10) ;//false

5.三目运算符
//5.三目运算符
//条件 ?条件成立时执行的代码 :条件不成立执行的代码
/* var day = 2;
day == 7 ? console.log(“睡到下午2点”) : console.log(“好好学习,天天向上”);*/
var age = 7;
age <= 6 ? console.log(“在家玩泥巴”) : console.log(“上学校玩泥巴”);

6.判断性别


确定

//2.点击确定按钮,打印当前性别
oBtn.onclick = function () {
console.log(girl.checked);//true false
//判断第一个选择框,是否选中,如果结果为true,是选中的,打印女,没有选中,打印男
girl.checked == true ? console.log(“女”):console.log(“男”);
}

7.隐式转换
//+ 101 + “age” = “101age”
console.log(100+1+“Age”+10+20); //101age1020 +号遇到字符串,就会变成连接符
console.log(""+10+20);//1020
console.log(“100”+2000);//1002000
console.log(true+false);//true—1 false----0 1
console.log(true+“10”); //true10
console.log(true+null); //true—1 null–0 1
console.log(10+undefined);//NaN

//运算过程中,都会尽可能转换为number
//-
console.log(“100”-20); //“100”–100 80
console.log(“100”-“20”);//80
console.log(“100”-“20px”);//NaN
console.log(100-null);//100
console.log(100-"");//100

//乘 *
console.log(100*“a”);//NaN
console.log(100*""); //0
console.log(100*“100”);//10000
console.log(100null);//0
console.log(100
undefined);//NaN
console.log(100*true);//100

//c除 /
console.log(100/“a”);//NaN
console.log(100/"");//Infinity 无穷大
console.log(100/“70”); //1…
console.log(100/null);//Infinity
console.log(100/undefined);//NaN

//取余%
/console.log(100%“a”);
console.log(100%"");
console.log(100%“70”);
console.log(100%null);
console.log(100%undefined);;
/

var n = “10”;
n++; //“10” ---- 》 10
console.log(n)
/*
+号遇到字符串就是连接符(只要运算的其中有一个是字符串,直接拼接)
其他都会尽可能转换为number类型
*/

① : 字符串和数字比较 : 字符串转数字,然后比较
② : 字符串和布尔值 : 字符串和布尔值都转数字,比较
③ : 数字和布尔比较 : 布尔转数字再比较
④ : NaN和任何的值比较都不相等,包括自己
⑤ : 字符串和数组 : 数组转字符串,再比较
⑥ : 字符串和对象 : 对象转字符串,再比较
⑦ : null和undefined比较相等,各自和其他数据类型的值比较都不相等
⑧ : 引用数据类型的值相比较永不相等

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!