展开

关键词

《JavaScript高级程序设计(第四版)》学习笔记(二)第3章

初学时,可能会很疑惑,为什么没报错呢,这就是变量提升的魅力 在函数执行的前一刻,会将所有的变量声明提到最前面 注意:仅仅是声明噢 上面的代码就可以转化成 function foo() { var 注意:typeof null返回object,因为 null被认为是一个对象 3.4.2 undefined 类型 当变量为初始化时,相当于给变量赋予了 undefined 值 let message 类型只有一个值 null,逻辑上,null值表示一个指针对象 在定义将来要保存对象值的变量时,建议使用 null 来初始化,不要使用其他值 关于 null 和 undefinedundefined undefined 转为 NaN null 转为 0 对于字符串的转换比较复杂 有数值就是数值本身,八进制,十六进制注意转为十进制 空字符串("")转为 0 对象先调用valueOf()方法,如果为 转化为字符串 第一种方法也是最常用最通用的方法toString 多数情况下,toString()接收任何参数,当操作的值为数值时,传入的参数表示转化为的数值对应的进制 let num = 10;

8430

面试官:JavaScript的数据类型你了解多少?

假设字符串中的第一个字符是数值字符,parseInt()函数也能识别不同的整数格式(十进制、八进制、十六进制)。换句话说,如果字符串以"0x"开头,就会被解释为十六进制整数。 如果字符串以"0"开头,且紧跟着数值字符,在非严格模式下会被某些实现解释为八进制整数。 (没错,字符串值也有 toString()方法,该方法只是简单地返回自身的一个副本。)null 和 undefined值没有toString()方法。 多数情况下,toString()接收任何参数。 如果值有toString()方法,则调用该方法(传参数)并返回结果。 如果值是null,返回"null"。 如果值是 undefined,返回"undefined"。 如果其中有一个是数字,另外一个是undefined、null、布尔型或数字,则会将其转换成数字进行加法运算,对象的情况还是参考上一条规则。

6510
  • 广告
    关闭

    腾讯云618采购季来袭!

    腾讯云618采购季:2核2G云服务器爆品秒杀低至18元!云产品首单0.8折起,企业用户购买域名1元起,还可一键领取6188元代金券,购后抽奖,iPhone、iPad等你拿!

  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    JavaScript-数据类型

    4.3 数据类型及其对象的转换规则 数据类型 转换为true的值 转换为false的值 Boolean true false String 任何非字符串 ""(空字符串) Number 任何非0数值 5.1 清除变量内容 包含 null 的变量包含有效的数字、字符串、布尔值、数组或对象。通过为变量赋 null值可以清除变量的内容(不删除变量)。 这样做不仅可以体现null作为对象指针的惯例,而且也有助于进一步区分null和undefined。 具有前导“0”并包含数字“8”和/或“9”的数字将被解释为十进制数字。 ? 8.2 浮点数值 浮点值可以是带有小数部分的整数。此外,还可以用科学计数法来表示它们。 包含小数点且小数点前面有单个“0”的数字被解释为十进制浮点数。

    28320

    前端学习(27)~js学习(五): typeof和数据类型转换

    此时它将会把数字转换为指定的进制,如果指定则默认转换为 10 进制。 但是对于 null 和 undefined,则不会调用 toString()方法。它会将 null 直接转换为 "null"。将 undefined 直接转换为 "undefined"。 (因为是先将b转为字符串"undefined",然后然后再操作) (3)自动带有截断小数的功能:取整,四舍五入。 情况三:null 和 undefined 都会转换为 false。 情况四:引用数据类型会转换为 true。注意,数组[]和对象{},转换结果也是 true,这个一点,很多人都不知道。 情况三: null + 数字 等价于:0 + 数字 情况四: undefined + 数字 计算结果:NaN 运算符:-、*、/ 1、任何非 Number 类型的值做-、*、/运算时,会将这些值转换为Number

    29120

    js 数据类型笔记

    ):表示真伪的两个特殊值,即true(真)和false(假) 1.4undefined:表示“未定义”或不存在 1.5null:表示值, 1.6对象(object):各种值组成的集合,分成三个子类型。 // "undefined" 二、null, undefined 和布尔值 1、null, undefined转数字化 null 转为数字是 0 undefined 转为数字是 NAN 2、null, undefined的使用场景 null表示值。 undefined表示“未定义”,场景有4个 2.1变量声明了,但没有赋值 var i; i // undefined 2.2调用函数时,应该提供的参数没有提供,该参数等于 undefined JavaScript规定,如果行首是大括号,一律解释为语句(即代码块)。 如果要解释为表达式(即对象),必须在大括号前加上圆括号。

    35420

    Array构造的数组使用map为何失效?

    我的第一直觉就是:首选创建一个长度为 100 的数组,然后由 map 用 index 去初始化每一个元素。 接下来我们会解释为何刚刚的代码没有效果。 当你使用 Array 构造函数来新建一个数组,那么它会创建一个新的数组对象,并且将长度length设定为指定的值。 length: 100; } 当你去访问数组的第 0 个元素的时候,返回值为 undefined。但并不是指第 0 个元素得值为 undefined,而是当数组下标不存在的时候,默认的返回值。 , 1: undefined, 2: undefined, ... 99: undefined, length: 100 } 就可以顺利使用 map 函数了。 版权声明 转载时请注明作者 Fundebug以及本文地址: https://blog.fundebug.com/2018/06/26/why-mapping-constructed-array-not-work

    31020

    JavaScript真假值知多少

    `,因为值的类型被考虑在内: // all false 1 === '1'; 1 === [1]; '1' === [1]; 在JavaScript里,会将值设定为六种原始数据类型其中的一种: · Undefined `false`,0和空字符串都是相等的. 2. `null`和`undefined`和他们自己是相等的,和其它值都不等. 3. `NaN`和任何值都不相等. 4. 数组是一个真值,和true比较返回false,和false比返回true?! // 这样使用 if (x == false) // ... // 如果x是false, 0, '',或者[]执行 // 这样写 if (! 一个数组或者一个NaN变量都会导致很长时间的调试!

    19820

    【面试利器】原生JavaScript灵魂拷问,你能答上多少(一)

    = x;}复制代码全局函数 isNaN 方法:推荐使用。MDN 对它的介绍是:isNaN 函数内包含一些非常有趣的规则。 除值 0,-0,null,NaN,undefined,或空字符串() 为 false 外,其余全为 true转化为string显式:String 方法可以显式将值转换为字符串隐式:+ 运算符有一侧操作数为 对象不做赘述。 答案复制代码类似 1 两个数组都执行 toPrimitive,返回两个空字符串。 友情提示:由于 {} 可以解释为代码块的形式,有些需要注意的地方,举个栗子: 对象调用方法时:{}.toString() 会报错箭头函数返回对象时:let getTempItem = id => {

    11020

    Js中数组空位问题

    就是一个基本数据类型,是一个值,而是empty表示了该处没有任何值,是一个完全为的位置。 undefined以及null处理成空字符串。 以及null视为空字符串 console.log([1, , 1, null, undefined].join("|")); // 1||1|| // toString 将空位与undefined以及 ()方法会将数组的空位转为undefined,扩展运算符也会将空位转为undefined,copyWithin()会连同空位一起拷贝,for of循环也会遍历空位并将值作为undefined,includes ()、entries()、keys()、values()、find()和findIndex()等会将空位处理成undefined

    40342

    JS快速入门(一)

    console.log(a); //undefined 类型:Null var timer = null; console.log(timer); 对象类型:Object 标签、数组、对象、Math ,会将数字转换成字符串,然后和另外一个字符串进行拼接; var num1 = '123' var num2 = 12 var num3 = num1 + num2 console.log(num3 ) // 结果:'12312' 字符串和数字进行减、乘、除运算,以及大小比较时,会将字符串转换成数字,再和 另一个数字进行运算或比较 var num1 = '10' var num2 = 1 var ,非空字符串转换成布尔值的时候都是true 任何数组(即使是数组),任何对象(即使是对象) 转成布尔值的时候都是 true var a = 0 if (a) { console.log(' 函数在调用的时候,会将调用时给定的参数和定义时设定的参数依次绑定。

    7430

    一、前端基础-JavaScript-JavaScript数据类型

    -- JavaScript堆内存与栈内存 1、堆内存:基本数据类型,如整型,字符串 2、栈内存:引用数据类型,如对象 --> <! :string,字符,符号,数字组成的序列 3、布尔值:Boolean,false或true,用于调节判断 4、:Null 声明一个对象,只能是对象(引用数据类型) 5、未定义:Undefined, 内部只有一个值undefined,如果声明了某个变量但是没有赋值,那么变量的类型就是undefined --> <! "); break } //Null var obj=null; alert(obj); //未定义 var s3=undefined -- 数据类型转换 1、数字+字符串会将数字转换成字符串进行拼接 2、数字+布尔值,会将布尔值转换成数字进行运算 3、字符串+布尔值,会将布尔值转换成字符串拼接 4、parseInt:转换成int类型

    9420

    ES6 解构赋值详解

    null 不严格等于 undefined。 Unexpected token = 解决方法:在第二行代码加上“()” let a; const obj = { a:"aaa" }; ({a} = obj); a // "aaa" 上面代码中,解析器会将起首的大括号 var {a = 1} = {a: undefined}; a // 1 var {a = 3} = {a: null}; a // null 如果将大括号写在行首,JavaScript 会将解释为代码块 var x; {x} = {x: 1}; // SyntaxError: syntax error 上面代码的写法会报错,因为 JavaScript 引擎会将{x}理解成一个代码块,从而发生语法错误。 // 解决方法 ({x} = {x: 1}); 三、字符串的解构赋值 字符串也可以解构赋值,因为字符串被转换成了一个类似数组的对象。

    29120

    怪异的JavaScript系列(一)

    []; // -> true 相等(==)判断操作会将两边的类型都转换为数字(number),然后再比较。因为[]和![]都会转换为0。我们可以理解[]是一个数组,只不过为而已,那么为 true。 左侧[]直接转换为数字,因为数组会转换为0,所以尽管我们认为[]为 true,这里却变成了0。 下面是简化的计算过程: +[] == +! true"; // -> true true 是一个真值,用 1 表示;字符串的“true”则为 NaN。 undefined。 参考: 20.1.2.9 Number.MIN_VALUE 版权声明 转载时请注明作者 Fundebug以及本文地址: https://blog.fundebug.com/2018/04/03/javascript-werid-series

    29810

    JavaScript 判断对象、数组的方法

    我们在判断参数是否为时,希望把null, undefined, {}, [],"" 这五类都判定为。 一、为什么判定对象、数据有点“难”? 首先,我们先看下下面的表格: a 取非 ! 描述 数据类型 null true true 对象 Null undefined true true 未定义对象 Undefined 0 true true 数值0 Number "" true true 空字符串 String [] false false 数组 Array {} false false 对象 Object 从表格中,我们可以看出想要判断是不是null, undefined 若要兼容IE9以下,可以用 for...in替代,但要注意for...in 会将对象原型链上的属性也枚举出来,所以要借hasOwnProperty()方法来判断是不是对象本身的属性。 true; //检验字符串类型的null if (a === "undefined") return true; //检验字符串类型的 undefined

    10K30

    37个JavaScript基本面试问题和解答(建议收藏)

    为什么或者为什么? 考虑到这一点,最简单,最清洁的ECMAScript-6之前的解决方案(即使将非数字值(例如字符串值)传递给该函数,该解决方案也具有足够的可靠性以返回false)将成为以下用法按位异或运算符: function 这里有几个观点可以让人们回答这个问题: 将数组传递给另一个数组的push()方法会将整个数组作为单个元素推入数组的末尾。 JavaScript引擎将使阵列插槽3至9成为“插槽”。 b)在这里,a [6]将输出未定义的值,但时隙仍为,而不是未定义的。在某些情况下,这可能是一个重要的细微差别。 例如,使用map()时,map()的输出中的插槽将保持为,但未定义的插槽将使用传递给它的函数重映射: var b = [undefined];b[2] = 1;console.log(b); //

    22210

    js重修课:数据类型

    原始类型包括null、undefined、数字、字符串、布尔型。 原始类型的值不能被更改。不论是字符串更改或其他,并不会影响到原来的值,而只是创建一个新的引用。 如 var a = "hello"; a.len = 2; alert(a.len); //undefined. a为原始类型 null和undefined ECMA规定undefined == null typeof null返回"object",因为它实际表示的是一个对象指针 数字 判断变量是否NaN:x! =x因为NaN并不等于自身 对象 字符串不是对象,但当引用了字符串的属性时,js会将字符串值通过调用new String(s)的方式临时转换成对象,用来处理属性的引用。 类型转换 undefined可以在if中被转换为false,但undefined != false +x等价于Number(x),也可以写成x-0 !!x等价于Boolean(x)

    26020

    扫码关注云+社区

    领取腾讯云代金券