有关JavaScript基本数据类型的一些问题

时间:2019-06-06 00:51:46

标签: javascript

JavaScript具有7种原始数据类型:字符串,数字,布尔值,null,未定义,符号,bigint

我了解三种数据类型,字符串,数字,布尔值;我也知道bigint被引入是因为数量不够。为什么数字是简单的浮动数字的一个示例:

"Conectado\n'

以下是我的问题:

  1. 未定义的是什么?它与c ++中的void相同吗?但void是关键字。为什么在Javascript中未定义原始数据类型?
  2. 为什么将数据类型为null? var a = 1.000000000000001; var b = 1.0000000000000001; console.log(Number.isInteger(a)) //false console.log(Number.isInteger(b)) // true 返回似乎是一个对象。 undefined和null之间有什么区别?在c ++中有什么类似的东西?
  3. 什么是符号?我阅读了此链接What is the motivation for bringing Symbols to ES6?,有人可以给我一个我们确实需要符号的示例吗?

1 个答案:

答案 0 :(得分:0)

基本上,在javascript中,我们有两类类型:基本体和对象(函数和数组也是对象。)。 按其值复制基元,按其引用复制对象。

c ++中的undefined和void不相同。 JavaScript也具有void运算符,javascript和c ++中的void运算符相同,但是将javascript属性与C ++进行比较是不合理的。 C ++ vs Java更合理。

空值和未定义之间的差异

1-

let name; 

这是未定义的,我们声明了但没有返回任何值。如果未返回值,则函数返回未定义 我们还可以将其显式设置为undefined。

let name=null,

在需要清除变量值的情况下,我们使用null。

2-我们可以在JSON中使用null,但不能在JSON中使用undefined。

3-undefined是一种类型,而null是一个空对象。为什么null为对象,ECMA需要解决一些问题。这是javascript中的错误。

我们使用SYMBOLS将对象的属性或方法设为私有。因此,我们隐藏细节并仅显示要点。它在javascript中称为抽象。

如何实现:让我们创建一个具有“ radius”属性的简单类

class Circle {
    constructor(radius) {
        this.radius = radius; 
    }
    }

符号本质上是唯一标识符。每次调用此函数时,我们都会获得一个唯一的标识符。但是,它不是构造函数。

Symbol()===Symbol() //will be false

实施:

const _radius=Symbol()
class Circle {
    constructor(radius) {
    this[_radius] = radius; //since property name starts with _, we use bracket notation
        }
         }

现在测试一下。创建一个Circle实例:

const c=new Circle;
console.log(Object.getOwnPropertyNames(c))// you will see a number on the console.