美文网首页
JavaScript基础02-变量及数据类型

JavaScript基础02-变量及数据类型

作者: 释梦石 | 来源:发表于2020-08-23 15:00 被阅读0次

    变量

    变量是用于存放数据的容器。我们通过「变量名」获取数据,甚至可以修改数据。

    变量还可以用来保存字面量。变量的本质其实是程序在内存中申请的一块用来存放数据的空间。

    什么是变量

    变量是计算机内存中存储数据的标识符,根据变量名称可以获取到内存中存储的数据

    为什么要使用变量

    使用变量可以方便的获取或者修改内存中的数据

    如何使用变量

    js中使用var声明变量

    var name;
    

    变量赋值:

    var name;
    name = "zhudzhi";
    

    同时声明多个变量

    var name, sex,age;
    name = "zhudzhi";
    

    同时声明多个变量并赋值

    var name = zhudzhi ,age = 27;
    

    声明一个变量,并赋值,我们撑起为变量的初始化

    注意ES6之后,可以使用const,let关键字来声明一个变量。

    const name;
    let age;
    

    var,const和let声明变量的区别

    1. var定义的变量会预解析,简单的说就是如果变量没有定义就直接使用的话,JavaScript回去解析这个变量,代码不会报错,只会输出undefined
    2. var定义的变量可以反复去定义,当然后面的会覆盖前面的
    3. let定义的变量不会预解析,必须先声明再使用,否则会报错
    4. let不能定义已经定义过的变量(无论之前是用var定义的还是let或者const定义的
    5. let是块级作用域,函数内部使用let定义后,对函数外部无影响,简单说就是在一个{}里面生效
    6. const定义的变量不会预解析,必须先声明再使用,否则会报错
    7. const定义的变量不允许修改,所以,const用来定义常量。
      所以我们使用const声明常量的好处,一是阅读代码的人立刻会意识到不应该修改这个值,二是防止了无意间修改变量值所导致的错误,另外其实js编译器也对const进行了优化,可以提高代码的执行效率;另外let声明的变量没有预编译和变量升级的问题,先声明再使用其实更为规范,而let本身是一个块级作用域,很多时候我们在写代码的时候都希望变量在某个代码块内生效,也更为方便。

    变量命名规则和规范

    规则 - 必须遵守的,不遵守会报错

    1. 由字母、数字、下划线、$符号组成,不能以数字开头
    2. 不能是关键字和保留字,例如:for、while。
    3. 区分大小写
      规范 - 建议遵守的,不遵守不会报错
    4. 变量名必须有意义
    5. 遵守驼峰命名法。首字母小写,后面单词的首字母需要大写。例如:userName、userPassword

    数据类型

    在计算机中,不同的数据所需占用的存储空间不同,为了充分利用存储空间,于是定义了不同的数据类型。而且,不同的数据类型,寓意也不同。
    我们都知道,无论这个变量是字符串类型,还是数字类型,我们都可以直接用 var 去定义它,因为:JavaScript 是一种「弱类型语言」,或者说是一种「动态语言」,这意味着不需要提前声明变量的类型,在程序运行过程中,类型会自动被确定。JS 的变量数据类型,是在程序运行的过程中,根据等号右边的值来确定的.

    js中的数据类型

    1. 基本数据类型(值类型):String 字符串、Number 数值、Boolean 布尔值、Null 空值、Undefined 未定义。
    2. 引用数据类型(引用类型):Object 对象。
      说明,js中引用数据类型只有object类型。而函数,对象属于object。

    数据类型之间最大的区别

    1. 基本数据类型:参数赋值的时候,传数值。
    2. 引用数据类型:参数赋值的时候,传地址(修改的同一片内存空间)。所以,String在某种意义上也属于引用数据类型,只是在使用上类似于基本数据类型。
    3. 基本数据类型的值,直接保存在栈内存中。值与值之间是独立存在,修改一个变量不会影响其他的变量。
    4. 对象是保存到堆内存中的。每创建一个新的对象,就会在堆内存中开辟出一个新的空间;而变量保存了对象的内存地址(对象的引用),保存在栈内存当中。如果两个变量保存了同一个对象的引用,当一个通过一个变量修改属性时,另一个也会受到影响。
    5. typeof,可以用来判断变量的类型
    typeof 变量名
    //或者
    typeof(变量名);
    
    typeof 返回结果
    typeof 数字 number
    typeof 字符串 string
    typeof 布尔型 boolean
    typeof 对象 object
    typeof 方法 function
    typeof null object
    typeof undefined undefined

    String类型

    字符串型可以是引号中的任意文本,其语法为:双引号 "" 或者单引号 ''。,换言之,用引号声明的变量就是String类型的。

    需要注意的是,同类引号不能嵌套:双引号里不能再放双引号,单引号里不能再放单引号。而单引号里可以嵌套双引号;双引号里可以嵌套单引号。

    转义字符
    在字符串中我们可以使用\作为转义字符,当表示一些特殊符号时可以使用\进行转义。
    常见的转义字符如下,

    常见的转义字符

    字符串长度

    string类型有length属性,一个字符算一个字符串长度(一个英文字符,一个中文字符,一个空格都算一个字符。)


    字符串长度

    字符串拼接

    字符串拼接使用 + 连接

    console.log(11 + 11);
    console.log('hello' + ' world');
    console.log('100' + '100');
    console.log('11' + 11);
    console.log('male:' + true);
    
    1. 两边只要有一个是字符串,那么+就是字符串拼接功能
    2. 两边如果都是数字,那么就是算术功能。
    3. 字符串具有不可变性,字符串里面的值不可被改变。对string重新赋值,其实是改变了引用,老的字符串不会被修改,依旧会保存在内存中。
    4. 在ES6中拼接字符串,可以使用模板字符串

    模板字符串
    使用反引号(``)代替普通的单引号或双引号。
    使用${expression}作为占位符,可以传入变量。

    let str = 'hello world';
    let newStr = `你好,${str}`; //输出:你好,hello world
    

    并且,模板字符串是支持换行的,不必转义,反引号中是什么就直接在页面显示什么。

    模板字符串中插入函数的返回值

    模板字符串

    Number类型

    在JS中所有的数值都是 Number 类型,包括整数和浮点数(小数)

    浮点数精度问题
    浮点数值的最高精度是 17 位小数,但在进行算术计算时其精确度远远不如整数,所以,我们不应该取判断两个浮点数是否相等。
    数值范围

    由于内存的限制,ECMAScript 并不能保存世界上所有的数值。

    1. 最大值:Number.MAX_VALUE,这个值为: 1.7976931348623157e+308
    2. 最小值:Number.MIN_VALUE,这个值为: 5e-324
    3. 如果使用 Number 表示的变量超过了最大值,则会返回Infinity。无穷大(正无穷):Infinity
    4. 无穷小(负无穷):-Infinity
      注意:typeof Infinity的返回结果是number。任何数据类型typeof都是 number

    数值判断
    是一个特殊的数字,表示Not a Number,非数值。

    NaN

    注意,NaN 与任何值都不相等,包括 NaN 本身。
    判断一个变量是不是数值,可以使用isNaN来判断

    isNaN(value);
    //value :要被测的值,如果给定值为NaN,则返回值为`true`;否则为`false`。
    

    Boolean类型

    1. Boolean字面量: true和false,区分大小写
    2. 计算机内部存储:true为1,false为0
      要用来做逻辑判断: true 表示真,false 表示假。布尔值直接使用就可以了,千万不要加上引号,加了引号就变成了一个字符串。

    Undefined

    使用 typeof 检查一个 undefined 值时,会返回 undefined。

    1. undefined表示一个声明了没有赋值的变量,变量只声明的时候值默认是undefined
    2. 如果你从未声明一个变量,就去使用它,则会报错(这个大家都知道);此时,如果用 typeof 检查这个变量时,会返回 undefined。
    3. 如果一个函数没有返回值,那么,这个函数的返回值就是 undefined。或者,也可以这样理解:在定义一个函数时,如果末尾没有 return 语句,那么,其实就是 return undefined。

    null

    null 专门用来定义一个空对象(例如:let a = null)。

    如果你想定义一个变量用来保存引用类型,但是还没想好放什么内容,这个时候,可以在初始化时将其设置为 null。null表示一个空,变量的值如果想为null,必须手动设置。

    1. Null 类型的值只有一个,就是 null。比如 let a = null。
    2. 使用 typeof 检查一个 null 值时,会返回 object。

    null 和 undefined 有很大的相似性。看看 null == undefined 的结果为 true 也更加能说明这点。但是 null === undefined 的结果是 false。它们虽然相似,但还是有区别的。比如,任何数据类型和 undefined 运算都是 NaN; 任何值和 null 运算,都是这个数本身,null 可看做 0 运算

    相关文章

      网友评论

          本文标题:JavaScript基础02-变量及数据类型

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