你知道吗,在 JavaScript 中,变量的类型是动态的,这意味着同一个变量可以存储不同类型的值。这种动态类型的特性既是优势,也可能带来一些意想不到的问题。这几天我在做项目时,遇到了一个从方法返回的值问题。这个值由数字和字母组成,有三种情况:数字加字母、纯数字和空串。目标是过滤掉了空串,结果发现方法返回的值真是让人抓狂。纯数字时返回的居然不是字符串,而是数值。这导致我在直接调用字符串方法时报错了。
let num = 123; console.log(typeof num); // 输出: 'number' let str = "hello"; console.log(typeof str); // 输出: 'string' let bool = true; console.log(typeof bool); // 输出: 'boolean'需要注意的是:
let arr = []; console.log(arr instanceof Array); // 输出: true let date = new Date(); console.log(date instanceof Date); // 输出: true3. Array.isArray() 方法:简洁高效,专用于数组
let arr = []; console.log(Array.isArray(arr)); // 输出: true4. Object.prototype.toString.call() 方法:全面精确,适合所有类型
let num = 123; console.log(Object.prototype.toString.call(num)); // 输出: '[object Number]' let arr = []; console.log(Object.prototype.toString.call(arr)); // 输出: '[object Array]' let nul = null; console.log(Object.prototype.toString.call(nul)); // 输出: '[object Null]'如何选择合适的类型判断方法?