如何在 JavaScript 中检查值是否为原始值?


在本教程中,我们将了解检查给定数据类型是否为原始类型的方法。

JavaScript 中的数据类型 1. 原始类型 2. 非原始类型

原始数据类型 - 字符串、数字、未定义、布尔值、空值、符号、大整数。

非原始数据类型 - 对象

原始数据类型/值不是对象,它在语言实现的底层表示。所有原始值都是不可变的,这意味着您不能更改其类型,而是可以将新值重新分配给变量。

要检查值是否为原始值,我们检查给定的值是否为对象;如果我们提供的值是对象,则意味着它不是使用某些方法的原始数据类型。

方法 1:使用 Object()

我们将使用严格相等运算符检查给定值是否为对象类型,因为它还会检查数据类型以及值。它将首先将值转换为对象,因为我们将通过对象将值作为参数传递。如果我们的值是对象,则 object 函数将返回相同的值,并且它将被视为对象,否则严格相等运算符将检查并返回 false,因为类型将不相同。

语法

inputValue !== Object(inputValue);

让我们定义一个函数来检查输入值是否为原始类型。

function isPrimitive(inputValue){
   if(inputValue===Object(inputValue)){
      return "Value is not primitive";
   }
   else{
      return "Value is primitive";
   }
}

示例

在下面的示例中,我们检查以下值是否为原始值。

  • 空值

  • 数字

  • 字符串

  • 字符串对象

  • 布尔值

  • 数组

  • 空数组

  • 对象字面量

<!DOCTYPE html> <html> <head> </head> <body> <h2>Check if the value is primitive or not</h2> <p id="result"></p> </body> <script type="text/javascript"> function isPrimitive(inputValue) { if (inputValue === Object(inputValue)) { console.log("Value is not primitive") document.getElementById("result").innerHTML += inputValue +": not primitive <br>" } else { console.log("Value is primitive") document.getElementById("result").innerHTML += inputValue +": primitive <br>" } } isPrimitive(null) isPrimitive(12) isPrimitive("This is simple string") isPrimitive(new String("This is string object")) isPrimitive(false) isPrimitive([1, 2, 3]) isPrimitive([]) isPrimitive({}) </script> </html>

方法 2:使用 typeof 运算符

在这种方法中,我们将使用typeof运算符检查数据类型,并且我们知道非原始数据类型始终是对象类型,因此我们将检查我们的值是否为对象类型。

如果我们的值不是对象或函数类型,则它是原始类型;否则它不是原始类型。我们还必须处理 null 的情况,因为 null 是原始类型值,但typeof如果我们检查 typeof(null),则会显示输出为对象。

function isPrimitive(inputValue){
   if(inputValue==null)
   {
      return "Value is primitive";
   }
   if(typeof(inputValue)=="function" || typeof(inputValue)=="object"){
      return "Value is not primitive"
   }
   else{
      return "Value is not primitive"
   }
}

示例

在下面的示例中,我们检查不同的值是否为原始值。为了检查值是否为原始值,我们使用了 typeof 运算符。我们检查类型是否为函数或对象。如果类型是函数或对象,则该值不是原始类型;否则它是原始类型。

<!DOCTYPE html> <html> <head> </head> <body> <h2>Check if the value is primitive or not</h2> <div id="result"></div> </body> <script type="text/javascript"> function isPrimitive(inputValue){ if(inputValue==null) { return `primitive <br>`; } if(typeof(inputValue)=="function" || typeof(inputValue)=="object"){ return `not primitive <br>`; } else{ return `primitive <br>`; } } let resultDiv = document.getElementById("result"); resultDiv.innerHTML += "12: " + isPrimitive(12); resultDiv.innerHTML += "null: " + isPrimitive(null); resultDiv.innerHTML += "false: " + isPrimitive(false); resultDiv.innerHTML += "[1,2,3]: " + isPrimitive([1,2,3]); resultDiv.innerHTML += `"This is simple string": ` + isPrimitive("This is simple string"); resultDiv.innerHTML += "new String(): " + isPrimitive(new String("This is string object")); resultDiv.innerHTML += "[]: " + isPrimitive([]); resultDiv.innerHTML += "{}: " + isPrimitive({}); resultDiv.innerHTML += "new Date(): " + isPrimitive(new Date()); </script> </html>

因此,我们了解了检查给定值是否为原始类型值或非原始类型值的方法。

更新于: 2022-08-23

3K+ 浏览量

开启你的 职业生涯

通过完成课程获得认证

开始学习
广告