Home  >  Article  >  Web Front-end  >  A brief discussion on js data type judgment and array judgment

A brief discussion on js data type judgment and array judgment

高洛峰
高洛峰Original
2017-01-14 10:02:411148browse

Written at the beginning:

During yesterday’s interview, I found that I didn’t answer a very, very simple question. Maybe it was because I was too nervous, and I felt like I was making myself cry. Later, I thought about it and should record it carefully so that I can have a deep impression. The revolution has not yet succeeded, and we still need to work hard to become strong!

1. The six major data types of js

number: numbers, integers, floating point numbers, etc.,

string: single quotes or double quotes to indicate,

Boolean: Returns true and false, these two values ​​do not necessarily correspond to 1 and 0

object: object, which can be created by executing the new operator followed by the name of the object type to be created.

null: There is only one value data type. Logically speaking, the null value represents a null object pointer.

undefined: Undefined. When a variable is declared using var but not initialized, the value of the variable is undefined.

2. Data type judgment typeof

typeof can solve the judgment of most data types. Its return value is a string, which describes the type of the operand.

//判断变量num是不是一个数字类型
if(typeof num=='number') {
  return true;
}

Return results:

var a="hling"; console.log(a); //string
var a=1; console.log(a); //number
var a=false; console.log(a); //boolean
var a; console.log(typeof a); //undfined
 
var a = null; console.log(typeof a); //object
var a = document; console.log(typeof a); //object
var a = []; console.log(a); //object
 
var a = function(){}; console.log(typeof a)
//function除了可以判断数据类型还可以判断function类型

In addition to the four types of string, number, boolean, and undefined, null, object, and array return They are all of object type! ! !

For function types, function is returned, such as typeof(Date), typeof(eval), etc.

3. How to determine array type in js

1) instanceof

instanceof is a ternary operator used to determine whether a variable is an instance of an object. This operator has something to do with the object orientation in JavaScript. To understand this, you must first understand the object orientation in JavaScript. Because this operator detects whether the object's prototype chain points to the prototype object of the constructor.

a instanceof b?alert("true"):alert("false")
//注意b值是你想要判断的那种数据类型,是不是一个字符串,比如Array

Example:

var arr = [1,2,3,1];
alert(arr instanceof Array); // true

2) constructor

is defined in the W3C definition: The constructor attribute returns the key to creating this References to array functions of objects

var arr = [];
arr instanceof Array; // true
arr.constructor == Array; //true

The method for judging various types is:

console.log("string".constructor == String);
console.log((123).constructor == Number);
console.log(false.constructor == Boolean);
console.log([].constructor == Array);
console.log({}.constructor == Object);

General method:

function isArray(object){
  return object && typeof object==='object' &&
      Array == object.constructor;
}

3) Characteristic judgment

object.isArray() to judge, the purpose is to accurately detect whether a value is an array. IE9+, Firefox 4+, Safari 5+, Opera 10.5+ and Chrome all implement this method. However, versions before IE8 are not supported.

function isArray(object){
  return object && typeof object==='object' && 
      typeof object.length==='number' &&
      typeof object.splice==='function' && 
       //判断length属性是否是可枚举的 对于数组 将得到false
      !(object.propertyIsEnumerable('length'));
}

4) Object.prototype.toString.call

Object.prototype.toString.call(value) == '[object Array]'

The above article briefly talks about js data type judgment and array judgment. This is the editor I have shared all the content with you, I hope it can give you a reference, and I also hope you will support the PHP Chinese website.

For more articles on js data type judgment and array judgment, please pay attention to the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn