美文网首页
数据类型的学习

数据类型的学习

作者: 聽說_0100 | 来源:发表于2018-09-20 20:07 被阅读0次

js是一种动态类型以及弱类型的语言(就是指变量数据类型可以在程序的执行过程中发生变化。)
变量在申明的时候不需要指定数据类型。
变量的类型是根据保存的数据决定的。

数据类型

基本数据类型
    数字型、字符串型、布尔型
复合数据类型
    对象类型
特殊数据类型
    null:null
    undefined:undefined

为什么分这么多数据类型?

为了优化内存

number类型

数字型分为两种,一种叫做整数型,一种叫做浮点型(小数),对于其他语言来说,严格区分整数型与浮点型的,JS不一样,JS里面严格意义来说没有整数型,整数是使用浮点型来保存的。
浮点数本身具有不精确性,所以使用浮点数的计算要小心。

例如:

    console.log((0.3-0.1)==0.2);   =>false(运行之后的结果)

number类型的位数:64位
第一位:符号位 0为整数,1为负数
在JS里面
从第二位到第十二位:指数位
从第13到64位:精度位
JS里面能够准确的表示15位的整数。
计算方式:
Math.pow()实现数学的次方运算
第一个参数是基数
第二个参数是次方
例:Math.pow(2,4)=16;
Math.random(); 随机数

JS可以通过两个常量获取出来JS数字的最大值和最小值
Number.MAX_VALUE
Number.MIN_VALUE

等号全解

=:赋值号;
==:判断符号,返回的是一个布尔值,判断两边数据的值是否相等。
===:全等判断,返回的也是一个布尔值,判断的是两边数据的值以及数据的类型是否一致。

科学计数法

JS里面的规则是当小数点后面的数字超过21位的时候会自动转换为科学计数法
当小数点后面的0大于5个的时候也会自动转化为科学计数法

eg:
1345678345678.3456789087654=1.3456783456783456789087654 * 10^12
0.00000000000121256=1.21256*10^-12
123e3 = 123 * 10^3

infinity(无穷大)

在前面加一个"-"就变为无穷小
无穷大是等于无穷大的,无穷大计算的时候也遵循无穷原则。
Infinity-Infinity:NaN

NaN:not a number 不是一个数字
但是NaN是数字类型。tupeof NaN:number
NaN是不等于NaN

什么时候会产生NaN?

基本上是数学计算出错的时候。
所以看到NaN就要检查自己的代码。

进制表示法

类型前缀:

  • 0b前缀表示2进制
eg: 0b010101010
  • 0o前缀表示8进制
eg: 0o4356734
  • 0x前缀表示16进制
eg: 0x678ff
  • 0前缀表示10进制,默认的是十进制

parseInt 格式化一个字符串转化为整型

例:

console.log(parseInt('123'));       123
console.log(parseInt('123.135'));   123
console.log(parseInt('123badgde')); 123
从左向右依次转化,直到遇到不是数字的字符停止,包括小数点。

例:

console.log(parseInt('badgde'));    NaN
如果转化的是纯字符串或者第一位不是数字,那么返回的结果是NaN。
也可以将小数转化为整数,没有四舍五入,小数部分直接舍弃。

总结:

第一个参数是字符串或者数字,就是要被转化的量
第二个参数就是进制数(2,4,8,16,32)。不能大于32,表示前面的数字或者量是按照这个进制表示的
parseInt('0101001001',2);表示前面的数字是二进制数

parseFloat()

将字符串转化为浮点型或者将数字转化为浮点型,如果要转化的数字是一个整数,并且没有传递第二个参数,那么结果还是这个整数

NaN 不等于NaN的,同时NaN也不等于任何数。

例:

if(a){
    console.log('is NaN');
}else{
    console.log('is not NaN');
}
is NaN:判断某一个量是不是 NaN,如果是返回true,不是返回false。

inFinity

判断一个数字是否是有限的。如果是准确的数字,那么返回true。如果是NaN,或者InFinity或者-InFinity返回的false。

布尔值(Boolean)

里面只有两个值,一个是true (真),一个是false (假)
也可以理解成数学里面的0 和1 的关系,他描述的关系是否非此即彼的关系,常用判断,返回的都是布尔值。

取反符号(!)

改变布尔值的真假,取相反的意思。
如果使用了取反号(!)那么返回的值一定是一个布尔值

null

null 数据类型只有一个值,就是null
null数据的产生都是直接赋值为null

undefined

undefined数据类型也是只有一个值,就是undefined

undefined的产生分为四种情况:

  • 一个申明了未赋值的变量就是undefined

  • 函数的参数没有传递的时候,函数的内部就是使用的就是undefined
    例:

function add(a,b){
    console.log(a);
    console.log(b);
    console.log(a+b);
}
add(1);
  • 函数没有返回值,但是调用函数返回结果的时候,这个结果就是undefined
    例:
function add(a,b){
    console.log(a+b);
}
console.log(add(2,3));
  • 对象的某一个属性没有赋值
var zhangsan = {};
zhangsan.name = 'mimi';
zhangsan.age = 22;
console.log(zhangsan.name);
console.log(zhangsan.age);
console.log(zhangsan.sex);  //undefined

null与undefined的区别

大部分情况下,null与undefined是一个意思
只有在转化为数字的时候不一样

例:

console.log(Number(null));      0
console.log(Number(undefined));     NaN
语义上理解,null表示空,没有东西,undefined表示未定义。

字符串

定义一个字符串,必须要使用引号,单引号与双引号都可以,但是引号不能嵌套同一种引号。
引号不能包含同一个类型的引号,可以包含不同类型的引号,但是可以使用转义字符实现同类包含。

注意:
字符串定义的时候只能在一行定义,不能敲换行符号,但是可以使用转义字符来换行,后面直接加回车,不能加空白字符,换行之后的字符串也要顶格写。

转义字符(\):作用就是改变后面字符原来的意思。

字符串与数组

length的属性:知道数组内部局有多少个元素
例:

var al = [1,2,3,5,6,7,8,99];   length为8
al.length = 8;
al[7] => 99
或者 al[length-1]
字符串也可以通过下标的方式获取出某一个位置的字符

字符串和数组一样也具有一个length的属性,这个属性表示的是字符串的长度,包括空白字符
例:

var str = 'sgkhj hj gk';
    console.log(str.length);
遍历字符串:用循环(while或者for)
例:var str = 'sgkhj hj gk';
    for(var i = 0;i<str.length;i++){
        console.log(str[i]);
}

计算输入的n个数字每一位数字加起来的和。

例如:123 = 1+2+3 = 6;
代码如下:
    <script>
        var s = '123'; 
        var sum = 0;
        for(var i = 0 ;i<s.length;i++){
            console.log(typeof s[i]);
            sum = sum + parseInt(s[i]);
        }
        console.log(sum);
    </script>

弹窗

alert() 提示框 属于BOM
系统函数以及用户直接定义的函数都是属于window对象的
而window对象是属于BOM的顶层对象。docunment是DOM的顶层对象。

confirm:确认弹窗,当点击确定的时候返回的结果是true,点击取消的时候返回的是false,直接关闭也是false。
confirm一般用于判断里面,确认之后的操作是否执行

prompt()获取用户的输入
返回的是用户输入的内容,但是这个内容是字符串类型的。

练习:计算用户确认开始计算之后,用户输入的两个数字的和。

提示:用户确认开始计算:confirm
用户输入的数字: prompt

代码如下:

window.onload = function(){
        var bool = confirm('是否开始计算');
        if(bool != true){
            alert('不算拉倒');
            return false;
        }
        var a = parseInt(prompt('请输入第一个数字'));
        while(isNaN(a)){
            a = parseInt(prompt('请输入第一个数字'));
        }
        var b = parseInt(prompt('请输入第二个数字'));
        while(isNaN(b)){
            b = parseInt(prompt('请输入第二个数字'));
        }
            alert(a+'+'+b+'结果是:'+(a+b));
};

强制类型转换

1. parseInt:将数字或者字符串转化整型
2. parseFloat:将数字或者字符串转化为浮点型,如果转化的内容结果是整型,那么结果就是整型,不是浮点型
3. Number('内容'):结果只有两种一种是数字类型,一种是NaN。只要内容中有一个不是数字的字符,那么结果就是NaN
4. string:将内容转化为字符串类型。句式:string(转化内容);
当使用string转化null,undefined,布尔值的时候会直接讲这个原始的数据类型转化为字符串

5. Boolean:把内容转化为布尔值,把任何内容转化为true或者false

转为布尔值为false的情况:

1. undefined
2. null
3. false
4. 0
5. NaN
6. ''或者""(空字符串)[中间有内容会转化为true]

总结:

1. string类型:只要不是空字符串,都会转化为true
2. number类型:只要不是0,即使是负数,都会转成true
3. object类型:只要不是null类型,都会转换成true
4. undefined类型:都会转化成false

隐式类型转化

  1. 判断里面:结果转化为布尔值
    eg:
1.console.log(1==2);
2.console.log(3>2);
3.if(){

    }
4.while(判断){

    }
  1. 具有字符串的加法:两边都要转化为字符串,就是字符串的拼接
  2. 数字与字符串比较大小:字符串转化为数字
  3. 减法运算的时候,字符串要转化为数字
技巧:快速的实现字符串转化为数字,减0运算
eg:
console.log(typeof (a-0));

相关文章

  • Kotlin学习之基础数据类型

    Kotlin学习之基础数据类型 @(Kotlin学习) Kotlin的基础数据类型包括数字类型、字符类型、字符串类...

  • iOS开发基础

    整理和查找了一下以前学习时候的资料 OC数据类型 1.数据类型 数据类型: 基本数据类型、指针数据类型 基本数据类...

  • python 数据类型转换的函数列举和必要性

    学习Python的转换数据类型前期主要学习目标有两个,一是数据类型转换的必要性,二是数据类型转换常用方法。 一、转...

  • 2-2-1 简介

    数据类型和运算符欢迎学习数据类型和运算符课程!你将学习: 数据类型:整型、浮点型、布尔型、字符串、列表、元组、集合...

  • 04-Java数据类型

    学习视频:数据类型 一、数据类型 定义:数据类型规定了在内存空间中只能存放什么类型的数据分类:A-基本数据类型 ...

  • 2019-11-08-本周学习周报

    学习总览 JavaScript 数据类型 变量 作用域 CSS CSS3选择器 学习内容 (1) 数据类型 类型检...

  • 02学习Python

    学习记录,欢迎指出错误 数据类型与变量 数据类型 在Python中标准的数据类型有六种: Number(数字 ) ...

  • 【Redis 系列】redis 学习五,多学习一些 redis

    【Redis 系列】redis 学习五,多学习一些 redis 的三种特殊数据类型 redis 三种特殊的数据类型...

  • java学习day02-类型和运算

    java学习第二天内容总结: 学习内容: 注意事项: 1、数据类型: 基本数据类型:byte、short、cha...

  • 数据库探索之旅——数据类型

    目录 1. 何为数据类型2. 数据类型列表3. 用户自定义数据类型4. 数据类型优先级 在学习基本表之前,需要先了...

网友评论

      本文标题:数据类型的学习

      本文链接:https://www.haomeiwen.com/subject/nebinftx.html