Kiểm tra kiểu số trong javascript

Trong bài này chúng ta sẽ tìm hiểu từ khóa typeof trong Javascript, từ khóa này dùng để kiểm tra kiểu dữ liệu của một biến bất kì trong Javascript.

Bài viết này được đăng tại freetuts.net, không được copy dưới mọi hình thức.

Trong quá trình làm việc với javascript, đôi lúc bạn muốn kiểm tra xem một biến đang có kiểu dữ liệu là gì, qua đó sẽ giúp bạn kiểm soát được lỗi dữ liệu không đồng nhất. Từ khóa này giúp lập trình viên tiết kiệm nhiều thời gian trong việc debug, và nó thường đi kèm với hàm console.log[].

1. Từ khóa typeof trong Javascript

Từ khóa typeof được dùng để kiểm tra kiểu dữ liệu của một biến nào đó [hoặc một giá trị nào đó].

Cú pháp của nó khá đơn giản như sau:

Bài viết này được đăng tại [free tuts .net]

Trong đó value có thể là một biến hoặc một giá trị xác định.

Dưới đây là tên một số kiểu dữ liệu và giá trị trả về tương ứng:

  • number - là các chữ số
  • string - là các chuỗi
  • object - là các đối tượng
  • undefined - không xác định
  • boolean - là kiểu boolean
  • symbol - là kiểu Symboy - có từ ES6 trở lên
  • function - là một function

var number = 12;
var string = "12";
var object = new Number[];

document.write["number: " + typeof number + "
"]; document.write["string: " + typeof string + "
"]; document.write["object: " + typeof object + "
"];

Trong PHP để kiểm tra một biến nào đó có tồn tại hay không thì ta dùng hàm isset[], còn trong Javascript thì ta dùng hàm typeof kết hợp với kiểu dữ liệu undefined. Nghĩa là nếu kiểu dữ liệu của một biến nào đó là undefined thì tức là biến đó chưa được định nghĩa hoặc giá trị của nó không xác định.

if [typeof variable == 'undefined']{
    document.write["Biến variable không được định nghĩa"];
}

Hàm typeof trong Javascript có đúng là một hàm không?

Theo định nghĩa của mozilla.org thì typeof chính xác là một từ khóa [keyword], nó không phải là một hàm bởi cấu trúc của một hàm là khi gọi phải có cặp mở đóng [].

Một ví dụ tổng hợp khác.

typeof true;      // 'boolean'
typeof false;     // 'boolean'

typeof 3000;      // 'number'
typeof 3.14;      // 'number'
typeof NaN;       // 'number'
typeof Infinity;  // 'number'

typeof 'foobar';     // 'string'
typeof `foobar`;     // 'string'

2. Typeof null trong Javascript

Giá trị null là một object nên khi kết hợp với từ khóa typeof thì nó sẽ trả về giá trị "object".

console.log[typeof null === 'object']; // true
console.log[typeof null === 'null']; // false

3. Lời kết

Trên là một số vấn đề liên quan đến từ khóa typeof trong Javascript, mục đích mình viết bài này là để các bài sau sử dụng lại hàm này và mình không mất công giải thích nữa. Còn một điều nữa là hàm typeof thường được dùng để kiểm tra trình duyệt có hỗ trợ một đối tượng nào đó hay không, ví dụ như localStorage trong HTML5.

Post Views: 6.622

Làm việc với Javascript nhiều, vấn đề các bạn thường gặpkiểm tra xem một object có phải là number hay không? [Javascript check is a number or not?].

Xin được giới thiệu 3 cách thông dụng dưới đây giúp kiểm tra isNumber trong Javascript:

1. Sử dụng isNaN[]

Như cái tiêu đề function, NaN [Not a number]. Hàm này kiểm tra một giá trị truyền vào có phải là số hay không?.

Syntax: Number.isNaN[value]

Trường hợp parameter value là số -> isNaN[] trả về false. Trường hợp parameter value không phải là số isNaN[] trả về true.

Chú ý rằng sử dụng isNaN[] để kiểm tra number trong Javascript sẽ có hai cách gọi:

isNaN[], this is global function, converts the tested value to a Number, then tests it.

Nếu chỉ sử dụng isNaN[], đây là function toàn cục, trước khi kiểm tra value có là number hay không?. Nó sẽ convert trước các giá trị này rồi mới kiểm tra.

// Trường hợp là string sẽ tự động convert qua number rồi mới chekc
// Không convert được -> not a number -> true
isNaN['123'] //false
isNaN['Hello'] //true
isNaN['2005/12/12'] //true

// Chú ý khi sử dụng với ''
isNaN[''] //false -> '' vẫn được hiểu là number

// NaN thì cho dù là String cũng check được
isNaN[true] //false
isNaN[undefined] //true
isNaN['NaN'] //true
isNaN[NaN] //true

// Các phép toán chia cho 0 chắc chắn không là number
isNaN[0 / 0] //true 

The isNaN[] function is different from the Number specific Number.isNaN[] method. Number.isNaN[] does not convert the values to a Number, and will not return true for anyone who want use javascript check is a number or not.

Function isNaN[] thì khác so với Number.isNaN[]. Function Number.isNaN[] không convert giá trị qua kiểu số. Cũng không trả về true cho bất kì giá trị nào khác ngoài kiểu số.

Theo ý kiến riêng của mình, trường hợp không thể sure được các giá trị truyền vào có thể là undefined hay NaN, sử dụng Number.isNaN[] sẽ là cách an toàn hơn để kiểm tra

2. Sử dụng isInteger[]

The Number.isInteger[] method determines whether the passed value is an integer.

Hàm Number.isInteger[] kiểm tra xem một được tượng truyền vào có phải là số hay không?

Syntax: Number.isInteger[value]

Function isInteger chỉ trả về True hoặc False. Trường hợp parameter value là số -> trả về true. Ngược lại, trả về false [bao gồm các trường hợp NaN – Not a Number].

Ví dụ sử dụng:

// Một số ví dụ khi sử dụng isNumber[]
Number.isInteger[0.1];       // false
Number.isInteger[Math.PI];   // false
Number.isInteger[Infinity];  // false
Number.isInteger[-Infinity]; // false

// Lưu ý trường hợp String number cần convert trước nha
Number.isInteger['10'];      // false

// Trường hợp số âm, big int
Number.isInteger[-100000];   // true
Number.isInteger[99999999999999999999999]; // true

// Trường hợp có phần thập phân
Number.isInteger[5.0];       // true
Number.isInteger[5.000000000000001]; // false
Number.isInteger[5.0000000000000001]; // true

Javascript check is a number has a many function to do it. But please take care that’s not working in Internet explorer!.

Lưu ý rằng function này không hỗ trợ trên Internet Explorer. Trường hợp đang viết Javascript core trên IE thì đừng dại dột sử dụng function này nha

Biết là thế, nhưng khó nói lắm. Nếu mà làm cho các dự án cũ của Nhật hoặc cho chính phủ thì xác định là vẫn test IE như thường

3. typeOf operator – javascript nice way check is number

Sử dụng typeOf cũng là một cách hay để check is a number đối với một object.

Using typeOf in Javascript check is a number maybe is a best way. The parameter to check in typeOf is object, function or variable.

Sử dụng typeOf cũng là một cách đáng xem xét. Ngoài kiểm tra đối tượng, typeOf còn có thể sử dụng với đối tượng, hàm và biến [object, function or variable].

// Booleans
typeof true === 'boolean';
typeof false === 'boolean';
typeof Boolean[1] === 'boolean'; // Boolean[] will convert values based on if they're truthy or falsy
typeof !![1] === 'boolean';

typeof [5, 10, 15, 20] === 'object';
typeof 3.14 === 'number';

Anh em có thể đọc thêm các bài viết hay khác về Javascript như:

  • Javascript prototype
  • Var,let, const trong Javascript

4. Tham khảo

  • Firefox document – Number.isInteger[] function
  • W3School – isNan[] function
  • Javascript check is a number with typeOf operator – GeekforGeeks

Chủ Đề