JavaScript第二天 js数据类型

本文介绍了JavaScript的两种主要数据类型:基本数据类型(Number, String, Boolean, null, undefined)和引用数据类型(Object, Function, Array)。讨论了null与undefined的区别,以及在什么情况下会出现NaN。此外,还讲解了数据类型的强制转换方法,如其他类型转Number和String,并列举了算术、比较等运算符。最后,提到了几种强制和隐式类型转换的例子。" 124841649,11730857,《机器学习实战》概览,"['机器学习', '人工智能', 'Python编程', '数据科学', '算法']

1、数据类型

两大类

一、基本数据类型 number string boolean null undefined

1,Number (数值)

// 1. typeof(变量):检测变量类型。
var a=10;
console.log(typeof(a));     //操作台输出number
//2. 8进制  0开头,没超过8的数
var b=011//3. 十六进制 0x开头,就是16进制:1~9 a~f
var c=0xa//4. NaN (not a number)不是一个数
//5. 小数相加由偏差,不要用小数做判断
console.log(0.1+0.2);   //输出 0.3000000004

2,String(字符串)

 //string  写在引号里面的  都是string
var str = '';  //空字符串
console.log(typeof str) ;
var x = '1234567890qwetyuiopasdgjklzxcvbnm,.';
console.log(typeof x) ;
//获取到字符串的长度  字符串.length
console.log(x.length)
//  相同的变量名称  后面的会覆盖前面的
//charAt() 获取字符串中其中一位字符,从零开始
console.log(x.charAt(3))<==>console.log(x[3])

4,boolean(布尔类型 true false)一般用在条件判断
非0为真,非空为假, 0为假,其他数字为真,空字符为假,其他为真

console.log(10>20);    //false
console.log(20>10);    //true   

5,null 空 ; undefined 变量没有初始化值空缺。
null:Null类型,代表“空值”,代表一个空对象指针,使用typeof运算得到“object”,所以可以认为它是一个特殊的对象值。
undefined:Undefined类型,当一个声明了一个变量未初始化时,得到的就是undefined。

        var no=null;
        console.log(typeof no) ; //空  typeof检测为  object
        //undefined  未定义的
        var a;
        console.log(a); //  undefined
        //一般情况下  如果你的代码里出现  null 或者是  undefined  说明你的代码是有问题的
     
        var b = 'asd';
        console.log(b)  //  asd
二、引用数据类型(复合,复杂) Object 函数function 数组array

1,Object
对象类型object:具体的东西都可以看作对象(从页面当中获取的所有元素都是对象类型)

var obj={name:"张三",age:18,city:"北京"};
console.log(obj.name);  //输出   张三
console.log(obj['name']);  //输出张三
console.log(typeof obj);  //object

2,函数function

//function   
// function(){}  匿名函数
// function fun(){}  命名函数
function fun(){
console.log(typeof fun) 
}  
//  调用函数  调用几次  执行几次
fun()

3,数组array

 // array  数组
// var arr = [];
console.log(typeof arr)  //object
var arr1 = new Array();  //  通过new关键字
console.log(arr1)
var arr = [1,"数组",true,{"name":"ujiuye"},[]]; //数组里的项  可以是任意的数据类型
console.log(arr)
console.log(arr.length);
console.log(arr[2])
arr[2]=false
console.log(arr)   //(5) [1, "数组", false, {…}, Array(0)]
arr[10]='我是下标为10的项';// 数组里面允许出现下标为空的值
console.log(arr)  //(11) [1, "数组", false, {…}, Array(0), empty × 5, "我是下标为10的项"]
arr.push('我是后来的');//  在数组的后面添加一项
console.log(arr)  //(12) [1, "数组", false, {…}, Array(0), empty × 5, "我是下标为10的项", "我是后来的"]

2、数据类型的强制转换

其他转number
 //js  数据类型  number  string  boolean null  undefined
        //  object array-->object  function  -->function
        //  typeof   
        //null  -->  object  
        // 数据类型之间的转换    Number()  返回的是一个新的值  不会改变原有的值
        // 语法:  Number() 
        console.log(Number(''));  //  0
        console.log(Number('123'));  //123
        console.log(Number('234aqsd'));  //  NaN  not a number
        console.log(typeof NaN);
        console.log(Number('0.12.3')); //  NaN
        console.log(Number('.0123'));  //rgba(0,0,0,.9)
        console.log(Number('e123'));//  NaN
        //  字符串转数值  空的转成0  纯数字的转成对应的数值  可以识别一个小数点而且必须是纯数字的  其余全部转成NaN
        //boolean
        console.log(Number(true));  //1
        console.log(Number(false));  //0
        //null
        console.log(Number(null));  // 0
        //undefined
        console.log(Number(undefined)); //  NaN
        console.log(NaN == NaN);  //  false
        console.log(1 == '1');  //  true   隐式类型转换
        console.log(1 == true);  // true
        console.log(null == '');  // false  
        console.log('' == 0);   //  true
        // null  undefined  属于无值类型  和其他任意比较  均为  false
        console.log(0 == null); //false   
        console.log(null == null,11111);
        console.log(undefined == undefined,22222);
        //转数值类型的方法  浮点型的  整形的
        // parseInt()  识别字符串里以数字开头的连续性的值  转成对应的数值
        console.log(parseInt('123'));//123
        console.log(parseInt('123.234')) ; //123
        console.log(parseInt('123asd')) ; //123
        console.log(parseInt('0123asd')) ; // 123
        console.log(parseInt('0.123asd')) ; // 0
         // parseFloat() 识别字符串里以数字开头的连续性的值  可以识别一个小数点
        console.log(parseFloat('123')) ; //123
        console.log(parseFloat('0.as123'));  //0
        console.log(parseFloat('a0.as123')); // NaN
        //  isNaN  是不是一个数值   数字返回  false   
        console.log(isNaN('123q'))   //
其他转字符串

toString 变量有意义
String 变量没意义

 // string  toString()
        console.log(String(123)); //'123'
        console.log(typeof String(123)); //string
        console.log(String(true));  //'true'  'false'
        console.log(String(null)); //'null'
        console.log(String(undefined)); // undefined
        var arr = [1,'a',['asd']];
        var str = String(arr)
        console.log(typeof str); // '1,a,asd'
        // var obj = {"name":"ujiuye123"}
        // var obj = {"name":"ujiuye123","age":"12"}
        var obj = {};
        var str1 = String(obj)  //  [object object]
        console.log(str1)
        console.log(str1.length)
        console.log(typeof str1)
        // 变量.toString()  number类型  2~36  进制
        var x = 234;
        console.log(x.toString());
        var y = 13;
        console.log(y.toString()); // '13'
        console.log(y.toString(16)); // ‘d’

运算符

优先级: 
1,()最高,
2,一元运算符:  ++ -- !
3,算数运算符:* /  %       +   -
4,比较运算符: >  >=  <  <=
5,相等运算符: ==等于 ===绝对相等  !=不等  !==绝对不等,
6,逻辑运算符:先&&   后||
7,赋值运算符:+=   -=     *=    /=

1,算术运算符
前置++/–:先 加/减 1,后参与运算
后置++/–:先参与运算,后 加/减 1

 // 算术运算  + - * / % ++ --  
        // 隐式转换  - * / % 
        var x = 3;
        var y = 4;
        console.log(x+y); // 7
        console.log(3+'4');  //34   +  连接符
        console.log(3-'4'); // -1  隐式转换
        console.log(3*'4');  //  12
        console.log(3/'4'); // 0.75
        console.log(3%4);  // 3
        console.log(3%'4'); // 3
        //  ++ --  运算符在前  先运算 后赋值  元素符在后  先赋值后运算
        var z = 5;
        var a = z++;
        var w = 5;
        var b = ++w;
        console.log('a=',a,'b=',b);  //  a=5 b=6
        console.log(10/0);  //  Infinity
        console.log(0/0);  //   NaN
    var a = 10;
    var b = ++a + a++ + ++a;
    //b=11 + 11 + 13
    var c = b++ + ++a
    //c= 35 + 14
    console.log(a,b,c);  //  14 36 49

2,赋值运算符

 //赋值运算   = += -= *= /=
        var x = 1;
        // +=  x+=3  -->  x=x+3
        x+=1
        console.log(x) ; //2
        //-=  x-=3  --->  x=x-3
        x-=1
        console.log(x) ;  //1
        //*=  x*=3  -->  x=x*3
        x*=3
        console.log(x) ;//3
        // /+  x/=3   -->x=x/3
        x/=3
        console.log(x) ; //1
        var arr = ['天生我材必有用','千金散尽还复来','窈窕淑女','君子好逑'];
        var len = arr.length;
        var str = ''
        for(var i=0;i<len;i++){
          str+='<li>'+arr[i]+'</li>'
        }
        demo.innerHTML = str;

3,比较运算符

 // 比较运算  > < >= <= == !=  === !==   返回值是一个布尔值
        // console.log(10>20);//false
        // console.log(1+3<5);//true
       // console.log(null == 0);  //false
        // console.log(null != 0);  //true
        // console.log(''==''); //  true
        console.log([] == []); // false 
        var a = [];
        var b = a;
        var c = [];
        console.log(a==b); //  true  地址
        console.log(a==c); // false
        console.log(1 == '1') ; //  true    == 只比较数据大小
        console.log(1 === '1') ; // false  ===  同时比较数据大小和数据类型 
         
        //  浅拷贝
       /* var arr = [1,2,3]
        var arr1=arr
        arr1[3] = 4;
        console.log(arr)*/

4,逻辑运算符

//  逻辑运算  与 &&  或 ||  非 !   流程控制 (条件判断)
        //与 && 全真为真 一假则假
        console.log(3>2 && 4<5);  // true
        console.log(3<=2 && 4<5); // false
        // 或 ||  一真为真  全假才假  
        console.log(3<=2 || 4<5); // true
        console.log(3<=2 || 4>5); //  false
        // 非 !  
        console.log(!(null == 0));  // true
        //  0为假1为真  非空为真
        var str='';
        if(!str){
            console.log('非空')
        }

5,三元运算符

 //  三目运算  三元运算  条件?真:假
        var a = 0;
        // !(a<3)?alert('true'):alert('false')
        //运算符的优先级
       
        
        // console.log(!false+2)
           console.log(typeof (10+'a'))

1,js数据类型?

number数字   string字符串   boolean布尔   null空   undefined未定义
object复合类型   function函数    array数组

2,null和undefined的区别?

null表示空值,但是为object类型,undefined表示变量没有初始化,值的空缺。

3,NaN会在什么情况下出现?举例出现这种情况的代码?

NaN表示 not a number ;一般不正常运算出现。

//parseFloat 取小数,
   console.log(parseFloat('a0.as123'));   // NaN

4,例举至少 3 种强制类型转换和 2 种隐式类型转换?

//强制类型转换
        console.log(Number(''));  //  0
        console.log(Number('123'));  //123
        console.log(Number(null));  // 0
//隐式类型转换
console.log(10+"100")   //10100
console.log(true+false)  //1
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值