# JavaScript 数据类型 数据类型简介 为什么需要数据类型 变量的数据类型 数据类型的分类 简单数据类型 基本数据类型 数字型 Number 字符串型 String 获取变量数据类型 获取检测变量的数据类型...可用来获取检测变量的数据类型 var num = 18; console.log(typeof num) // 结果 number 不同类型的返回值 类型 例 结果 String typeof "...小白" "string" Number typeof 18 "number" Boolean typeof true "boolean" Undefined typeof undefined "undefined...取过来的值是 字符型的 var age = prompt('请输入您的年龄'); console.log(age); console.log(typeof...将string类型转成整数数值型 parselnt(78') parseFloat(string)函数 将string类型转成浮点数数值型 parseFloat('78.21') Number()强制转换函数
,代表一个非数值 4.isNaN() 用来判断一个变量是否为非数字类型,返回true或者false isNaN(X) X是数字,返回false;X不是数字,返回true console.log...1 false 参与运算当1来算 2.6 Undefined和Null 一个声明后没有被赋值的变量会有一个默认值undefined(如果进行相连或者相加时,注意结果) var str; console.log.../未定义类型 var space = null; console.log(typeof space);//object //prompt 取过来的值是字符串型 var age = prompt('请输入你的年龄...将string类型转成为整数数值型 parseInt('78') parseFloat(string)函数 将string类型转成为浮点数数值型 parseFloat('78') Number...()强制转换函数 将string类型转换为数值型 Number('12') js隐式转换(- * /) 利用算术运算隐式转换为数值型 '12'-0 var age = prompt('请输入你的年龄
这就是为什么不能被删除的原因. */ var foo = 1; delete foo; // false typeof foo; // "number" /* `bar...typeof x; // "number" eval('function x(){}'); /* `x` property 现在指向 function, 并且没有...赋值时并不会发生 */ function bar(){} bar = 1; delete bar; // false typeof bar; // "number...这就是为什么不能被删除的原因. */ var foo = 1; delete foo; // false typeof foo; // "number" /* `bar` 是 Global...this.x = 1; delete this.x; // TypeError: Object doesn't support this action typeof x; // "number
var x = 10; //x是数字型 x = 'zeyi'; //x是字符串型 js是动态语言,变量的数据类型是可以变化的。...如果是数字返回的是false,如果不是数字返回的是true。...关键字 var num = 10; console.log(typeof num); //number var str = 'zeyi'; console.log(typeof...prompt 取过来的值为字符型(string) var age = prompt('请输入您的年龄'); console.log(age); console.log(typeof age); 字面量...()函数 代表空、否定的值会被转换成 false,如''、0、NaN、null、undefined 其余值都会被转换成 true console.log(Boolean(''));//false
当试图删除一个不可配置的属性时,非严格代码将默默地失败,而严格模式将在这样的情况下抛出异常。 6.考虑以下两个函数。它们会返回相同的东西吗? 为什么相同或为什么不相同?...首先,虽然 NaN 意味着“不是数字”,但是它的类型,不管你信不信,是 Number: console.log(typeof NaN === "number"); // logs "true" 此外,...或: function isInteger(x) { return (typeof x === 'number') && (x % 1 === 0); 相当普遍的一个不正确的解决方案是: function...这就解释了为什么,有些令人奇怪的是, 1 && 2返回 2(而不是你以为的可能返回 true 或 1)。 20.执行下面的代码时将输出什么?请解释。...(function(x) { return (function(y) { console.log(x); })(2) })(1); 控制台将输出 1,即使从来没有在函数内部设置过x的值。
1、使用 typeof bar === "object" 判断 bar 是不是一个对象有神马潜在的弊端?如何避免这种弊端?...为什么要这么做? 换句话说,为什么要用立即执行函数表达式(Immediately-Invoked Function Expression)。...6、下面两个函数的返回值是一样的吗?为什么?..." 9、实现函数 isInteger(x) 来判断 x 是否是整数 可以将 x 转换成10进制,判断和本身是不是相等即可: function isInteger(x) { return parseInt...我长大的过程中也不断地听到这种话,我从来都不听,我就一直坚持我年轻时认为是正确的东西。——罗永浩
语法: String(变量) 使用 String()函数做强制类型转换时: 对于 Number 和 Boolean 而言,本质上就是调用 toString()方法。...prompt():用户的输入 prompt()就是专门用来弹出能够让用户输入的对话框。重要的是:用户不管输入什么,都当字符串处理。...知识补充:其他进制的数字 16 进制的数字,以0x开头 8 进制的数字,以0开头 2 进制的数字,0b开头(不是所有的浏览器都支持:chrome 和火狐支持,IE 不支持) 比如070...任何值做+a、-a、/a运算时,运算结果都会自动转换为 Number 类型。 内部调用的是 Number() 函数。...console.log(b); // 打印结果:666 加号:+ 情况一:字符串 + 数字 当加号的两边,只要有一个是字符串的时候,就会调用 String() 函数将数字转为字符串,然后再计算。
为什么要用? 使用它的目的是与HTML超文本标记语言、Java 脚本语言(Java小程序)一起实现在一个Web页面中链接多个对象,与Web客户交互作用。从而可以开发客户端的应用程序等。...因此,许多功能可以来自于脚本环境中对象的方法与脚本的相互作用。...//给a赋值为一个整形数据10 document.write(typeof(a)+""); //number a="string"; //给a赋值为一个字符串string...document.write(typeof(a)+""); //string a=true; //给a赋值为一个布尔类型true document.write(typeof...(a)+""); a=true; document.write(typeof(a)+""); var x=1;
1、math对象 方法 描述 ceil(x) 对数进行上舍入(天花板函数) floor(x) 对数进行下舍入(地板函数) max(x,y) 返回x,y最大值 min(x,y) 返回x,y最小值 pow(...可直接获取变量数据类型 NaN也是一个number类型 变量的取值为null时, 变量的数据类型为object Undefined取值的变量或者变量未赋值: 数据类型为undefined Infinity...(无穷大): 数据类型属于number类型 3、数据类型转换 (一)、字符串转化为数字类型 1、隐式类型转化 只要将数字的字符串与0相减(参与运算都可,加法运算除外) 2、强制类型转换 Number(...当条件成立的时候,这个值是true,if里的语句将会得到执行;否则这个值是flase,else里的语句将被执行。...结果1:结果2 含义:问号前面的位置是判断的条件,判断结果为boolean型,为true时执行结果1,为false时执行结果2。
这些类型值都可以通过 typeof操作符监测到,除了一个例外: typeof 42;// → 'number'typeof 'foo';// → 'string'typeof Symbol('bar')...null;// → 'object' 注意这里typeof { x: 42 };// → 'object' 为什么 typeof null === 'object' 在规范中, Null虽然作为 null...在 Java 中, null从来就不是一个单独的类型,它代表的是所有引用类型的默认值。...为了防止这种情况,当 o.x被共享时, o.x内的 MutableHeapNumber需要被重新封装成 HeapNumber传递给 y: ?...另外我很喜欢这类以小见大的技术点,以后当别人问你为什么要这样声明变量时,你往往就能开始表演…… 参考文章:The story of a V8 performance cliff in React
检测数据类型 通过 typeof 运算符检查: 两种形式:typeof x 或者 typeof(x)。...typeof null 会返回 "object" —— 这是 JavaScript 编程语言的一个错误,实际上它并不是一个 object。...1. if 语句 当 if 语句当条件表达式,会将表达式转换为布尔值,当为 truthy 时执行里面代码。...[break] } 当 expression 表达式的值与 value1 匹配时,则执行其中代码块。...函数调用 当定义一个函数后,它并不会自动执行,而是需要使用函数名称进行调用,如上面例子: fun(3); // 3 只要注意: 使用 函数表达式 定义函数时,调用函数的方法必须写在定义之后,否则报错:
检测数据类型 通过 typeof 运算符检查: 两种形式:typeof x 或者 typeof(x)。 以字符串的形式返回类型名称,例如 "string"。...typeof null 会返回 "object" —— 这是 JavaScript 编程语言的一个错误,实际上它并不是一个 object。...1. if 语句 当 if 语句当条件表达式,会将表达式转换为布尔值,当为 truthy 时执行里面代码。...[break] } 当 expression 表达式的值与 value1 匹配时,则执行其中代码块。...函数调用 当定义一个函数后,它并不会自动执行,而是需要使用函数名称进行调用,如上面例子: fun(3); // 3 「只要注意:」使用 「函数表达式」 定义函数时,调用函数的方法必须写在定义之后,否则报错
问题 35:NaN 是什么 NaN 即非数值(Not a Number),NaN 属性用于引用特殊的非数字值,该属性指定的并不是不合法的数字。 NaN 属性 与 Number.Nan 属性相同。...当使用严格模式时,不能使用隐式声明的变量,或为只读属性赋值,或向不可扩展的对象添加属性。...prompt() 方法显示一个对话框,提示访问者输入。 如果您希望用户在输入页面之前输入值,则通常会使用提示框。 弹出提示框时,用户必须在输入输入值后单击“确定”或“取消”才能继续。...X是一个具有foo属性的对象,由于它是一个自调用函数,所以咱们将从对象X中删除foo属性。这样做之后,当咱们试图引用一个被删除的foo属性时,结果是undefined。...函数定义只能有一个引用变量作为其函数名。 问题49:为什么要将JS源文件的全部内容包装在一个函数中 这是一种越来越普遍的做法,被许多流行的JS库所采用。
为什么? 结论: null不是对象。 解释: 虽然 typeof null 会输出 object,但是这只是 JS 存在的一个悠久 Bug。...BigInt是一种新的数据类型,用于当整数值大于Number数据类型支持的范围时。这种数据类型允许我们安全地对 大整数执行算术操作,表示高分辨率的时间戳,使用大整数id,等等,而不需要使用库。...因为隐式类型转换可能丢失信息,所以不允许在bigint和 Number 之间进行混合操作。当混合使用大整数和浮点数时,结果值可能无法由BigInt或Number精确表示。...Math.max(2n, 4n, 6n); // → TypeError 当 Boolean 类型与 BigInt 类型相遇时,BigInt的处理方式与Number类似,换句话说,只要不是0n,BigInt...解决方法: 1、利用IIFE(立即执行函数表达式)当每次for循环时,把此时的i变量传递到定时器中 for(var i = 1;i <= 5;i++){ (function(j){ setTimeout
虽然它看着像是一个 number,但它实际上并不是一个真实的 number:它有一堆额外的功能并且它是一个对象。 当我们使用 == 操作符时,它只会检查两者是否拥有相同的值。...然后,当我们使用 === 操作符时,两者的值以及类型都应该是相同的。new Number() 是一个对象而不是 number,因此返回 false。 ---- 8. 输出是什么?...为什么这么做有益的?假设我们将这个方法添加到构造函数本身里。也许不是每个 Person 实例都需要这个方法。这将浪费大量内存空间,因为它们仍然具有该属性,这将占用每个实例的内存空间。...在这个例子中,所有的映射都是number类型,所以if中的判断typeof num === "number"结果都是true.map函数创建了新数组并且将函数的返回值插入数组。 但是,没有任何值返回。...使用typeof操作符时, 操作值 x没有被定义:因为我们在x声明块的外部,无法调用它。这就意味着x未定义。
那么 lodash 为什么还要添加 (isObjectLike(value) && getTag(value) == '[object Number]')?...== null } Object.prototype.toString.call 每个对象都有一个toString()方法,当该对象被表示为一个文本值时,或者一个对象以预期的字符串方式引用时自动调用。...这是因为如果isNaN函数的参数不是Number类型, isNaN函数会首先尝试将这个参数转换为数值,然后才会对转换后的结果是否是NaN进行判断。...所以 Lodash 去判断 value 是否为 Object 时,只使用了 typeOf 操作即可。...function isWeakMap(value) { return isObjectLike(value) && getTag(value) == '[object WeakMap]' } Error 当运行时错误产生时
他们不是对象,他们没有原型,也没有构造器。 如果不能正确理解,typeof 操作符可能就不太直观了。典型的例子就是使用 typeof 操作符操作 null。...当 typeof 操作符操作 null 时,无论是否将 null 指定给 Null,结果都是 "object" 。...为什么是继承的?因为ECMASCript中对象有自己的属性,并且创建的中间对象,在这里没有自己的 toString 方法。因此,它从原型上继承,即 Number.prototype 。...第二,这已经不是功能而是缺点,当后代原型被创建,构造函数的代码也会执行。我们可以看到 A....[[Call]] activated 消息显示了两次,当 A 构造函数创建的对象被用于 B.prototype 的时候,以及对象创建时 a 对象自身。
= x; } 复制代码 全局函数 isNaN 方法:不推荐使用。MDN 对它的介绍是:isNaN 函数内包含一些非常有趣的规则。...但为了避免一些面试官出一些冷门题目,咱们来稍微了解一下 isNaN 的有趣机制:会先判断参数是不是 Number 类型,如果不是 Number 类型会尝试将这个参数转换为 Number 类型,之后再去判断是不是...举个例子: // 为什么对象会带来三种不同的结果 // 是不是很有趣 // 具体原因可以参考类型转换篇 console.log(isNaN([])) // false console.log(isNaN...转化为 string 类型的本质:需要转换为string的部分调用自身的toString方法(null/undefined返回字符串格式的null和undefined) 当被转换值为对象时,相当于执行...通过上面的学习,当对象与其他元素相加时,对象会调用 toPrimitive 转化为原始值: 执行 toPrimitive,未传入 PreferredType,methodNames 为 [valueOf
领取专属 10元无门槛券
手把手带您无忧上云