aedev.net
  • Trang chủ
  • AI
  • Mobile
  • Flutter
  • React Native
  • Backend
  • DevOps
  • Hướng dẫn
No Result
View All Result
SAVED POSTS
aedev.net
  • Trang chủ
  • AI
  • Mobile
  • Flutter
  • React Native
  • Backend
  • DevOps
  • Hướng dẫn
No Result
View All Result
aedev.net
No Result
View All Result
Minh họa kiến trúc backend API gọn gàng cho sản phẩm nhỏ

Number.isFinite và isFinite khi dữ liệu có thể là chuỗi

Suong Nguyen by Suong Nguyen
13/11/2026
in Đánh giá
0
585
SHARES
3.2k
VIEWS
Summarize with ChatGPTShare to Facebook

Một service nhận số lượng đã được parser đọc từ JSON. Trường quantity đôi khi là chuỗi, đôi khi là null. Nếu dùng isFinite toàn cục để kiểm tra, cả chuỗi số lẫn một số giá trị rỗng có thể được chấp nhận do JavaScript chuyển kiểu. Điều đó làm điều kiện kiểm tra khác với hợp đồng số mà service dự kiến.

Ví dụ và cách đọc

Đặt hai lựa chọn cạnh nhau trên cùng sáu giá trị. Number.isFinite chỉ chấp nhận number hữu hạn. Hàm toàn cục chuyển kiểu trước khi kiểm tra. Chạy fixture trên Node 24.18.1 để xem khác biệt về kiểu đầu vào và giá trị biên, không dùng kết quả để so tốc độ.

const assert = require('node:assert/strict');
const inputs = [12, '12', '', null, Infinity, NaN];
assert.deepEqual(inputs.map(Number.isFinite), [true, false, false, false, false, false]);
assert.deepEqual(inputs.map(isFinite), [true, true, true, true, false, false]);

Kiểm tra kết quả

Các assertion cho thấy chuỗi 12, chuỗi rỗng và null có kết quả khác giữa hai lựa chọn. Khi hợp đồng API yêu cầu JSON number, Number.isFinite diễn đạt sát mục tiêu và giúp phát hiện sai kiểu ở đầu vào. Khi đọc từ ô nhập vốn là chuỗi, hãy xử lý trường hợp rỗng trước, chuyển đổi theo quy tắc của form rồi mới kiểm tra số hữu hạn.

Áp dụng và giới hạn

Một giá trị hữu hạn vẫn có thể âm, có phần lẻ hoặc nằm ngoài khoảng cho phép. Thêm điều kiện nghiệp vụ riêng, chẳng hạn số nguyên trong khoảng được giao diện mô tả. Fixture không kiểm tra kiểu object đặc biệt hoặc BigInt. Đối với hàm toàn cục, chuyển kiểu có thể ném lỗi với một số kiểu ngoài ví dụ. Chọn phép kiểm tra theo hợp đồng và giữ test cho chính dữ liệu ở ranh giới API.

Tình huống áp dụng

Một test API nên gửi cả JSON number và JSON string với cùng chữ số. Nếu trường được định nghĩa là number, test mong đợi request dùng chuỗi bị từ chối với thông báo rõ kiểu dữ liệu. Ở một form chấp nhận chuỗi, test tương ứng có thể mong đợi chuỗi hợp lệ được chuyển thành number trước khi gửi. Hai test bảo vệ hai hợp đồng khác nhau dù người dùng nhìn thấy cùng số trên màn hình.

Đừng lấy kết quả true làm lý do giữ nguyên giá trị gốc để cộng. Giá trị đã qua isFinite toàn cục có thể vẫn là chuỗi, nên phép cộng phía sau có thể nối chuỗi. Đặt tên biến riêng cho dữ liệu đã chuyển, rồi dùng biến đó xuyên suốt bước tính toán và lưu trữ. Khi đánh giá lựa chọn trong review, ưu tiên câu hỏi dữ liệu đến từ đâu và cần mang kiểu gì ở dòng sử dụng tiếp theo.

Nguồn tham khảo

  • Tài liệu chính thức 1
  • Tài liệu chính thức 2

Tags: JavaScriptNode.jsValidation
SummarizeShare234
Suong Nguyen

Suong Nguyen

Related Stories

Minh họa kiến trúc backend API gọn gàng cho sản phẩm nhỏ

findLast hay vòng lặp ngược: tìm bản ghi cuối mà không đảo mảng

by Suong Nguyen
12/11/2026
0

So sánh ba cách tìm bản ghi cuối theo điều kiện, chú ý mutation, thứ tự và giá trị khi không tìm thấy.

Minh họa kiến trúc backend API gọn gàng cho sản phẩm nhỏ

Intl.NumberFormat: định dạng số để hiển thị có làm tròn dữ liệu gốc?

by Suong Nguyen
11/11/2026
0

So sánh toFixed và Intl.NumberFormat bằng fixture nhỏ, phân biệt chuỗi hiển thị, locale và giá trị số dùng để tính toán.

Minh họa kiến trúc backend API gọn gàng cho sản phẩm nhỏ

Intl.Collator numeric: sắp Mục 2 trước Mục 10 trong danh sách tiếng Việt

by Suong Nguyen
10/11/2026
0

So sánh sắp chuỗi mặc định với Intl.Collator có numeric, kiểm tra locale thực tế và thêm khóa phụ khi hai tên được xem là tương đương.

Minh họa kiến trúc backend API gọn gàng cho sản phẩm nhỏ

Array.at(-1) và array[-1]: đọc phần tử cuối hay thuộc tính tên âm?

by Suong Nguyen
09/11/2026
0

So sánh Array.at với truy cập bằng ngoặc vuông qua chỉ số âm, mảng rỗng và phần tử object để chọn cách đọc cuối danh sách rõ ràng.

Next Post
Minh họa pipeline CI/CD từ commit đến deploy cho team nhỏ

Docker STOPSIGNAL và cách kiểm tra container dừng có trật tự

0 0 votes
Article Rating
Subscribe
Login
Notify of
guest
guest
0 Comments
Oldest
Newest Most Voted
AE Dev

AE Dev mang đến các bài viết về lập trình, mobile app, backend, frontend, WordPress và công nghệ, phù hợp cho developer muốn học hỏi và cập nhật kiến thức thực tế.

Recent Posts

  • React Native Alert trên Android và hai đường hủy hộp thoại
  • Map.set có đưa khóa đã tồn tại xuống cuối không?
  • Android postInvalidate khi custom View cần lên lịch vẽ lại

Categories

  • AI
  • Backend
  • Đánh giá
  • DevOps
  • Flutter
  • Hướng dẫn
  • Lập trình Mobile
  • Phỏng vấn
  • React Native
  • Uncategorized

Weekly Newsletter

  • Buy JNews
  • Support Forum
  • Pre-sale Question
  • Contact Us

© 2026 AE Dev - Blog công nghệ, lập trình và chia sẻ kiến thức IT.

Welcome Back!

Login to your account below

Forgotten Password?

Retrieve your password

Please enter your username or email address to reset your password.

Log In
No Result
View All Result
  • Trang chủ
  • AI
  • Mobile
  • React Native
  • Backend
  • DevOps
  • Hướng dẫn
  • Flutter

© 2026 AE Dev - Blog công nghệ, lập trình và chia sẻ kiến thức IT.

wpDiscuz
0
0
Would love your thoughts, please comment.x
()
x
| Reply