js数据类型

什么是变量

可以变化的值

  • 1. 变量是用于存储信息的容器
  • 2. 变量是一段命名的存储空间
  • 3. 变量是在程序运行过程中值允许改变变量的值
  • 4. 变量是由变量名,变量值,和变量类型组成

变量命名规则

  • 第一个字符必须为字母,_或$,其后的字符还可以是数字
  • 严格区分大小写,要有一定的含义
  • 建议使用小驼峰规则来命名变量。redApple
  • 不能使用关键词,保留字作为变量名

变量的命名和复制

1.var 变量名     变量名=值

2.var 变量名=值

3.变量名=值

4.var 变量1=值1,变量2=值2

注意

  • 变量名是浏览器关闭后才释放在,在没关闭之前随时使用

  • 重新声明的变量,不会丢失原始值,除非重新赋值

  • 换行是语句的结束,最好结束时都加上 “ ; ”

强类型语言/弱类型语言

强类型语言【java】:

  • 要求变量的使用要严格符合定义,所有变量都必须先定义后使用。

  • 一旦一个变量被指定了某个数据类型,如果不经过强制转换,那么它就永远是这个数据类型了

弱类型语言【js/python/php】:

  • 它与强类型定义语言相反, 一个变量可以赋不同数据类型的值

判断数据类型

用typeof运算符判断数据类型

string

js中用来表述文本的数据类型

  • 字符串用单引号或双引号包括起来

  • 单双引号均不能解析变量

  • 变量与字符串,变量与变量之间可以使用运算符‘+’来链接

  • 单引号和双引号可以互相嵌套,如果单引号中要嵌套单引号,需要使用转义字符

Number

按照进制划分:二进制、八进制、十进制、十六进制

按照其他划分:整形、浮点型、NaN(not a number)

js中所有的数字是以IEEE-75标准格式表示的,浮点数的精确问题不是js特有的;因为有小数点以二进制表示位数是无穷的

整形: 5,10,-100,0xff00(十六进制),0377(八进制),0b1010(二进制),不管输入的是几进制,最终显示时都会转为10进制

浮点型:

浮点型是一个近似数,有时通过js计算得到的不是你想要的数

     console.log(0.3 + 0.1);
     console.log(1.0 - 0.9);
     console.log(0.2 + 0.5);
     console.log(0.333-0.1.toFixed(2));
     console.log(0.235+0.265.toFixed(2));

NaN(not a number)

NaN是一个特殊的number值,not a number表示非数字,当程序由于某种原因计算错误时,将产生一个无意义的数字NaN

NaN与任何值都不想等,包括NaN本身 任何涉及NaN的操作,结果都为NaN

var a = bb;
    age =20;
    alert(a-age);//Nan

Booleam

  1. 值只有true和false。分别代表逻辑真与假

  2. 布尔值通常用来表示比较所得的结果

  3. true和false是严格区分大小写的

 var num1 = 20;
 var num2 = 12;
 console.log(num1 > num2);//true
 console.log(num1 < num2);//false

undefined

  1. 定义了一个变量但没有为该变量赋值,使用了一个并未赋值的变量

  2. 使用了一个不存在的对象的属性时

null

  • null表示一个空值

  • null不等于空字符串""、''或0

  • null和undefined的区别是,null表示一个变量被赋予了一个空值,而undefined则表示该变量尚未被赋值

Array(数组)

方法一:var 数组名=new Array();

方法二:var cars=new Array("Audi","BMW","BYD");

方法三:var cars=["Audi","BMW","BYD"];

 var boxObj = new Object();
 boxObj.color = 'red';
 boxObj.brand = 'BMW'
 console.log(boxObj);
 console.log(boxObj.color);

var arr = ['少林寺','嵩山','武功山']
console.log(arr);
console.log(arr[0]);
console.log(arr[1]);
console.log(arr[2]);

var arr1 = new Array('北京','上海','广州')
console.log(arr1);
//多维数组
var arr2 = [['金水区','中原区','惠济区'],'武汉','重庆']
console.log(arr2);
console.log(arr2[0]);
console.log(arr2[0][1]);

object对象

对象:一切皆对象

面向过程:按照事件的发生顺序,从上往下依次执行

对象对象:只会对象做某件事情

对象:     属性:本身所拥有的特性     方式:能做的事情

对象: { },使用{ }包括起来的都是对象 [ ], 使用[ ]包括起来的都是数组

创建对象: 方法一:var 对象名称 = new Object(); 方法二:var 对象名称 = {'键':‘值’,'键':‘值,'键':‘值,'键':‘值};

    //创建对象
    // 车
    var car = new Object();
    // 属性
    car.color = 'red';
    car.brand = 'BMW';
    car.price = 28.5;
    // 方法
    car.run = function(){
        console.log('我能跑');
    }
    car.stop = function(){
        console.log('我能停止');
    }
    car.setSpeed = function(){
        console.log('我能定速巡航');
    }

    //获取对象中的属性和方法

    // 调用整个对象
    console.log(car);
    // 类似数组的方式调用
    console.log(car['color']);
    console.log(car['price']);

    // 使用对象的方式调用
    console.log(car.color)
    console.log(car.price); 
    // 调用对象里面的方法
    car.run();

数据类型转换

  1. 自动转换->js会根据需要自动进行类型转换,但是转换时会遵循一定的规则

  2. 强行转换->通过内置对象的方法强制转换

转为字符串

自动转换

类型

转换字符串型后的结果

number

NaN、0、或数值对应的字符串

null

"null"

boolean

"true"、"false"

undefined

"undefined"

object

若对象存在为其toString()方法的值,若对象不存在为"undefined"

强制转换:

String()、object.toString() 

转为数字类型

自动转换

类型

转换为数字型后的结果

string

若内容为数字则为相应数字,否则为NaN

null

0

boolean

true转为1,false转为0

undefined

NaN

object

NaN

 

注意:数学运算(特殊情况:+再出现字符串的情况下不是数学运算,而是字符串的拼接)

强制转换

Number() 按照自动转换规则转换

parseInt(string) 、parseFloat(string)

isNaN() 函数用于检查其参数是否是非数字

注意:parseInt还可以接受第二个参数(2到36之间),表示呗解析的值的进制,返回该值对应的10进制数。parseInt的第二个参数为10,即默认是十进制转十进制

parseInt('1000'); // 1000
// 等同于
parseInt('1000',10); // 1000
parseInt('1000',2); // 8
parseInt('1000',6); // 216
parseInt('1000',8); // 512

转为布尔类型

自动转换

类型

转换布尔型后的结果

""或''

false

0或0.0

false

NaN

false

undefined

false

null

false

其它

true

强制转换

Boolean()、!!

 特殊案例

console.log(Boolean([])); // true
console.log([] == false);   // true; ==两边的数据类型不一致,需要转为数字进行比较;[]=>字符串''=>数字0
console.log(![] == false); // true  ==的优先级比较低,肯定是先算左边 ![] 然后与后面进行比较,[]转为布尔值为true 取反 false false==false
console.log('0' == false); // true

在==比较的过程中,数据转换的规则 类型一样的几个特殊点:

{ } == { } //false,对象对比的是堆内存的地址

[ ] == [ ] //false

NaN == NaN //false

类型不一样的转换规则:

  1. null == undefined true,但是换成 === 结果是false(因为类型不一致),剩下null/undefined和其他任何数据类型值都不相等

  2. 字符串 == 对象,要把对象转为字符串

  3. 剩下如果 == 两边数据类型不一致,都是需要转换为数字再进行比较

如果类型都是字符串,就会按照ASCII编码的进行对比

运算符

算术运算符(+,-, *,/,%,++,--)

“+”算数加和字符串相接

i++ 先赋值,再加1;++i 先加1,再赋值

注意:正号有隐式类型转换功能

alert(typeof(+'5')) // number

比较运算符(>,<,>=,<=,,=,!=不等于,!==不全等于,===)

专门用作判断,返回值结果为boolean

比较运算符的结果是Boolean类型

赋值运算符(=,+=,-=, *=,/=,%=)

= 赋值运算符

var a = 10;
var arr = ['张三','李四','王武','孙刘','马奇'] 

var i=10;

i+=1 //i++ 效果一样

使用场合:累加求和,字符串拼接

逻辑运算符(!,&&,||)【两边均为表达式】

运算符

解释

!

逻辑取反

&&

逻辑且;只有两个操作数都为 true 时,才返回 true,否则返回 false。

||

逻辑或;如果两个操作数都为 true,或者其中一个为 true,就返回 true,否则就返回 false。

??(了解)

空值合并运算符,如果左侧的表达式为 null或者 undefined 时,返回其右侧表达式,否则返回左侧表达式。

 逻辑运算符用于测定变量或值之间的逻辑

|| 存在断点问题,第一个式子成立,不在执行第二个式子;如果第一个式子不成立,执行第二个式子(真假为真,假假为假,真真为真)

&& 式子两边同时成立,执行的是if(true),只要有一个不成立。或两个都不成立执行false

||运算方法:

只要“||”前面为false,不管“||”后面是true还是false,都返回“||”后面的值。 只要“||”前面为true,不管“||”后面是true还是false,都返回“||”前面的值。

&&运算方法[假前真后]:

只要“&&”前面是false,无论“&&”后面是true还是false,结果都将返“&&”前面的值;

只要“&&”前面是true,无论“&&”后面是true还是false,结果都将返“&&”后面的值;

条件运算符【三元运算符】

条件表达式?结果1:结果2

如果条件表达式结果为true则返回结果1

如果条件表达式结果为false则返回结果2

运算符的优先级

优先级分类运算符结合性
1后缀运算符( )、[ ]、->从左到右
2单目运算符!、*(指针)、& 、++、--、+(正号)、-(负号)从右到左
3乘法/除法/取余*(乘号)、/、%从左到右
4加法/减法+、-从左到右
5位移运算符<<、>>从左到右
6关系运算符<、<=、>、>=从左到右
7相等/不等==、!=从左到右
8按位与&从左到右
9按位异或^从左到右
10按位或|从左到右
11逻辑与&&从左到右
12逻辑或||从左到右
13三目运算符? :从右到左
14赋值运算符=、+=、-=、*=、/=、 %=、 >>=、 <<=、&=、^=、|=从右到左

 小括号>算术运算符>比较运算符>逻辑运算符>赋值运算符

json数据类型

JSON:JSON(JavaScript Object Notation, JS 对象简谱) 是一种轻量级的数据交换格式

主要作用: JSON 是用于存储和传输数据的格式。

JSON 通常用于服务端向网页传递数据 。

特性: json的键不能重复,如果键是一个完整的单词,可以直接写,如果键里面包含了空格,要用引号引起来

{key: value, key: value}
var address = {
    "city":"成都",
    province:'四川',
    aaa:{
       name:'Test',
       value:{
           value:"123"
       }
     },
     bbb:[{
       name:"lisi"
     },{
       name:"zhangsan"
     },{
       name:"wangwu"
     }],
     say:function(){
       
     }
};

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值