js中的数据类型

发布时间:2024年01月15日

JavaScript 中有以下几种常见的数据类型:

  1. 基本类型(原始类型):

    • 字符串(String):表示文本数据。
    • 数字(Number):表示数值数据。
    • 布尔(Boolean):表示真(true)或假(false)值。
    • undefined:表示未定义的值。
    • null:表示空值或没有值。
  2. 引用类型:

    • 对象(Object):表示复杂的数据结构,包括对象、数组、函数等。
    • 数组(Array):表示有序的集合。
    • 函数(Function):表示可被调用的代码块。
    • 日期(Date):表示日期和时间。
    • 正则表达式(RegExp):表示用于匹配字符串的模式。

除了以上列出的数据类型外,JavaScript 中还有一些特殊的数据类型,例如 Symbol(表示唯一的标识符)和 BigInt(表示任意精度的整数)。

需要注意的是,JavaScript 是一种动态类型语言,变量的数据类型是在运行时确定的,可以随时根据需要改变变量的类型。

另外,可以使用?typeof?运算符来检查一个值的数据类型。例如,typeof "hello"?返回 “string”,typeof 42?返回 “number”。但是需要注意?typeof null?的返回值是 “object”,这是一个历史遗留问题。

在js中定义一个数字

在 JavaScript 中,可以使用数字字面量来定义一个数字。数字字面量可以是整数或小数,并且可以使用科学计数法表示非常大或非常小的数。

以下是定义数字的几种方式:

// 整数
let a = 123;

// 小数
let b = 3.14;

// 科学计数法
let c = 6.02e23; // 6.02乘以10的23次方,即 6.02×1023
let d = 1.2345e-6; // 1.2345乘以10的负6次方,即 1.2345×10??

需要注意的是,在 JavaScript 中,数字是一种原始类型。当您使用算术运算符(+、-、*、/、% 等)对数字进行计算时,会得到一个新的数字作为结果。

另外,JavaScript 中还有一些特殊值,例如 Infinity(无穷大)、-Infinity(负无穷大)和 NaN(不是数字)。这些值也属于数字类型,但不是有效的数字值,需要注意。

let和var的区别

let?和?var?都是 JavaScript 中用于声明变量的关键词。它们之间的主要区别在于作用域和变量提升的行为上。

  1. 作用域

    var?声明的变量属于函数作用域或全局作用域,而?let?声明的变量属于块级作用域。块级作用域是一对花括号({})中的任何语句,例如?iffor?或?while?循环语句。

    示例:

    function example() {
      var x = 1;
      if (true) {
        var x = 2;
      }
      console.log(x); // 2
    }
    example();
    
    function example2() {
      let y = 1;
      if (true) {
        let y = 2;
      }
      console.log(y); // 1
    }
    example2();
    

    在第一个示例中,var?声明的?x?变量的作用域是函数作用域,其在?if?块中重复声明(该块也属于函数作用域)。所以?console.log(x)?打印的结果是?2

    在第二个示例中,let?声明的?y?变量的作用域是块级作用域(即?if?块)。所以?console.log(y)?打印的结果是?1

  2. 变量提升

    在使用?var?声明变量时,它们会被提升到它们所在作用域的顶部,在声明之前的任何地方都可以访问它们。这种行为被称为变量提升。

    示例:

    function example() {
      console.log(x); // undefined
      var x = 1;
    }
    example();
    

    上面的示例中,var?声明的?x?变量会被提升到函数作用域的顶部,但它没有被赋值,因此第一行打印出来的是?undefined

    在使用?let?声明变量时,变量在声明之前不会被访问,不会存在变量提升的行为。

综上所述,let?比?var?更容易控制变量的作用域,不会存在变量提升的问题。建议在使用变量时优先使用?let,避免因为变量提升问题导致的不良后果。

文章来源:https://blog.csdn.net/weixin_45342302/article/details/135588899
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。