当调用这个函数时,就会创建 var msg = "hello dada",创建变量并赋值。记住:局部变量的定义只在它的作用域里有效,不在里面时,这个变量就会被销毁。 那么如何解决这样的情况呢?...如果使用var声明变量时,没有进行初始化,那么这个变量的值为undefined。 ? file ?...非数值,任何和NaN的操作,都返回NaN,NaN与任何值都不相等,包括自己,返回false。...,结果都是NaN;如果是Infinity与0相乘,结果为NaN;如果Infinity与非0数值相乘,则结果是Infinity或-Infinity,屈居于有符号操作数的符号,Infinity与Infinity...相乘结果是Infinity。
NaN 的设计有两个特点: 1.任何涉及 NaN 的操作都返回 NaN 2.NaN与任何值都不相等,包括 NaN 本身 0/0 // NaN NaN/10 // NaN NaN == NaN // false...isNaN() 接受参数后,会尝试将这个值转换为数值,如果这个值不能被转换为数值,则返回 true。...函数的 constructor 可以被重写,因此可能会出现判断错误。...在向参数传递基本数据类型的值时,被传递的值会被复制给一个局部变量(即命名参数,也就是 arguments 对象中的一个元素)。...在向参数传递引用类型的值时,会把这个值在内存中的地址复制给一个局部变量,因此这个局部变量的变化会反映在函数外部。
,并且结果进栈 0x69 lmul 栈顶两long型数值相乘,并且结果进栈 0x6A fmul 栈顶两float型数值相乘,并且结果进栈 0x6B dmul 栈顶两double型数值相乘,并且结果进栈...float型数值大小,并且结果(1,0,-1)进栈;当其中一个数值为NaN时, -1进栈 0x96 fcmpg 比较栈顶两float型数值大小,并且结果(1,0,-1)进栈;当其中一个数值为NaN时,1...进栈 0x97 dcmpl 比较栈顶两double型数值大小,并且结果(1,0,-1)进栈;当其中一个数值为NaN时,-1进栈 0x98 dcmpg 比较栈顶两double型数值大小,并且结果(1,0,...-1)进栈;当其中一个数值为NaN时,1进栈 0x99 ifeq 当栈顶int型数值等于0时跳转 0x9A ifne 当栈顶int型数值不等于0时跳转 0x9B iflt 当栈顶int型数值小于0时跳转...jsr 跳转至指定16位offset位置,并将jsr下一条指令地址压入栈顶 0xA9 ret 返回至局部变量指定的index的指令位置(通常与jsr、jsr_w联合使用) 0xAA tableswitch
0x67 dsub 将栈顶两 double 型数值相减并将结果压入栈顶 0x68 imul 将栈顶两 int 型数值相乘并将结果压入栈顶 0x69 lmul 将栈顶两 long 型数值相乘并将结果压入栈顶...将栈顶两 int 型数值作“按位与”并将结果压入栈顶 0x7f land 将栈顶两 long 型数值作“按位与”并将结果压入栈顶 0x80 ior 将栈顶两 int 型数值作“按位或”并将结果压入栈顶...压入栈顶 0x95 fcmpl 比较栈顶两 float 型数值的大小,并将结果(1、0 或 -1)压入栈顶 ;当其中一个数值为 “NaN” 时,将 -1 压入栈顶 0x96 fcmpg 比较栈顶两 float...型数值的大小,并将结果(1、0 或 -1)压入栈顶 ;当其中一个数值为 “NaN” 时,将 1 压入栈顶 0x97 dcmpl 比较栈顶两 double 型数值的大小,并将结果(1、0 或 -1)压入栈顶...;当其中一个数值为 “NaN” 时,将 -1 压入栈顶 0x98 dcmpg 比较栈顶两 double 型数值的大小,并将结果(1、0 或 -1)压入栈顶 ;当其中一个数值为 “NaN” 时,将 1
,并且结果进栈 0x69 lmul 栈顶两long型数值相乘,并且结果进栈 0x6A fmul 栈顶两float型数值相乘,并且结果进栈 0x6B dmul 栈顶两double型数值相乘,并且结果进栈...fcmpl 比较栈顶两float型数值大小,并且结果(1,0,-1)进栈;当其中一个数值为NaN时, -1进栈 0x96 fcmpg 比较栈顶两float型数值大小,并且结果(1,0,-1)进栈;当其中一个数值为...NaN时,1进栈 0x97 dcmpl 比较栈顶两double型数值大小,并且结果(1,0,-1)进栈;当其中一个数值为NaN时,-1进栈 0x98 dcmpg 比较栈顶两double型数值大小,并且结果...(1,0,-1)进栈;当其中一个数值为NaN时,1进栈 0x99 ifeq 当栈顶int型数值等于0时跳转 0x9A ifne 当栈顶int型数值不等于0时跳转 0x9B iflt 当栈顶int型数值小于...无条件跳转 0xA8 jsr 跳转至指定16位offset位置,并将jsr下一条指令地址压入栈顶 0xA9 ret 返回至局部变量指定的index的指令位置(通常与jsr、jsr_w联合使用)
1+2+3+4 其运算顺序使用小括号表示如下: ((1+2)+3)+4 左值、赋值及其副作用 左值就是只能出现在赋值运算符左侧的值,在 JavaScript 中主要指变量、对象的属性、数组的元素。...减法运算符的隐性转换如果失败,则返回 NaN,这与使用 parseFloat() 方法执行转换时的返回值是不同的。...var n = 5; //定义并初始化任意一个数值 console.log(NaN * n); //NaN与任意操作数相乘,结果都是NaN console.log(Infinity * n); //Infinity...与任意非零正数相乘,结果都是Infinity console.log(Infinity * (- n)); //Infinity与任意非零负数相乘,结果是-Infinity console.log(Infinity...* 0); //Infinity与0相乘,结果是NaN console.log(Infinity * Infinity); //Infinity与Infinity相乘,结果是Infinity 除法运算
例如,将数字与 undefined 相乘不是有效操作,因此结果为 NaN: 1 * undefined; // => NaN 同样尝试解析无效的数字字符串(如 'Joker')也会导致 NaN...fontSize * 2 被评估为 undefined * 2,结果为 NaN。 当把缺少的属性或返回 undefined 的函数用作算术运算中的值时,将生成 “Not A Number”。...3 NaN 作为操作数 当算数运算的操作数为 NaN 时,也会生成NaN 值: 1 + NaN; // => NaN 2 * NaN; // => NaN NaN 遍及算术运算: let invalidNumber...在将 invalidNumber 值(具有 'NaN')附加到 result之后,会破坏对 result 变量的操作。...4 Indeterminate 形式 当算术运算采用不确定形式时,将会产生 NaN 值。
,因为当你将立即执行函数的返回值赋值给一个变量时它们不是必需的; var result = function () { return 2 + 2; }(); 这种语法是非常简单的,但它可能看起来有点令人误导...原来JavaScript在事件中调用函数时用return返回值实际上是对window.event.returnvalue进行设置。而该值决定了当前操作是否继续。当返回的是true时,将继续操作。...当返回是false时,将中断操作。而直接执行时(不用return),将不会对window.event.returnvalue进行设置,所以会默认地继续执行操作。...3.JS获取元素的left属性为NaN 我遇到的问题是在使用JS获取定位为relative的元素时,解析返回值是一个NaN。我获取left属性的代码如下。...$(document).ready()与window.onload二者的区别: $(document).ready()方法在DOM完全就绪时就可以被调用。
isFinite 不同的是:它不会强制将一个非数值的参数转换成数值,这就意味着,只有数值类型的值,且是有穷的。...== NaN 将返回 true,它是一个自身不等于自身的值 return n !...这个标准在进行小数运算时精度可能会有不足,使用了 IEEE 754 标准的语言进行小数运算时会出现精度问题,这种问题不止 JS 这门语言独有。...,调用 split 方法分隔整数部分与小数部分,然后拿到小数部分的长度,相乘后的结果的小数位数等于相乘前两个小数的小数位数相加。...的数组,可选参数; reduce 如果没有第二参数,将使用数组中的第一个元素作为初始值,在没有初始值的空数组上调用 reduce 将报错。
两个相同的变量和作用范围(都是全局或都是局部变量),后出现的会覆盖先出现的变量,因为执行顺序是自上而下的。 七、js中的数据类型 虽然js在声明的时候不需要指定类型,但是每个值还是有类型的。...,所以结果是NaN 但是有字符串相加时,会进行字符串拼接,不会参与加号运算,故结果也就不会是NaN Infinity表示无穷大(当除数为0时,结果为无穷大) var i=100; var h=0...(数据交换格式) JSON主要的作用是:一种标准的数据交换格式。(目前非常流行。90%以上的系统,系统A与系统B交换数据的话,都是采用JSON。) 2、JSON是一种标准的轻量级的数据交施格式。...如: window.eval("var i=100:"); alert("i="+i);//i=100 Java连接数据库,查询数据之后,将数据在java程序中拼接成JSON格式的“字符串”将JSON...可以使用eval图数,将JSON格式的字符串转换成JSON对象。
--search( ) 检索与正则表达式相匹配的字符串 --slice( ) 截取取一个字符串串 --split( ) 将字符串分割成字符串数组...toUpperCase( ) 将字符串转换成大写 --valueOf( ) 返回对象的原始值 --toString( ) 返回字符串处理对象用过哪些方法?...Object.is()比较两个值是否相同。所有 NaN 值都相等(这与==和===不同)。Object.isExtensible()判断对象是否可扩展。...该变量将被回收全局变量:生命周期会一直持续,直到页面卸载局部变量:函数调用结束,局部变量也不再被使用,它们所占用的空间也就被释放闭包:由于闭包的原因,局部变量依然在被使用,所以也就不能够被回收如何解决:...1.冒泡型事件流:事件开始时由最具体的元素接收,然后逐级向上传播到较为不具体的节点。2.捕获型事件流:事件开始时由最不具体的元素接收,然后逐级向下传播到较为具体的节点。深拷贝和浅拷贝?
如果你具有一定JS基础,不妨尝试书写一下或想一想,再看“功能实现”,涉及到的小细节知识可不少,特别是没有内容的对象({})的检测方法。...在有合法结果时返回一个对象,而在没有合法结果时返回一个空的对象 - {} 对象的检测 如何检测一个没有内容的对象呢?这个问题反而成为了解决“鸡兔同笼”功能需求的关键。...方法 var obj = {}; console.log(JSON.stringify(obj) == '{}') JSON.stringify()方法,用于将JSON对象转换为字符串,当将对象转换为字符串之后...NaN的基本检测 当用户在input中输入非数字或不合法数字时,会通过上面的Number方法转换为NaN。 当出现NaN时,则需要给用户给予反馈,而不是继续进行运算,因此需要进行NaN进行检测。...NaN检测的方法很简单,让其与自身相比较,如果自己和自己不相等,那么,该值为NaN。 整数检测 在鸡兔同笼计算当中,有可能用户输入的内容是合法数字,也是合法整数,但是有可能在运算之后变成小数。
在应用于不同值时,遵循下面规则: 在应用于一个包含有效数字字符的字符串时,先将其转换为数字,在执行自增自减操作 在应用于一个不包含有效数字字符的字符串时,将变量的值设为 NaN 在应用于一个布尔值 false...,返回 true 如果操作数是 undefined,返回 true 逻辑非操作符也可用于将一个值转换为与其对应的布尔值,即同时使用两个逻辑非操作符,会模拟转型函数 Boolean() 的行为,结果也与该函数结果相同...如果乘积超过了 ECMAScript 数值的表示范围,则返回 Infinity 或 -Infinity 如果有一个操作数是 NaN,则结果是 NaN 如果是 Infinity 与 0 相乘,则结果是 NaN...如果是 Infinity 与非 0 数值相乘,则结果是 Infinity 或 -Infinity,取决于有符号操作数的符号 如果是 Infinity 与 Infinity 相乘,则结果是 Infinity...严格模式对函数有一些限制: 不能把函数命名为 eval 或 arguments 不能把参数命名为 eval 或 arguments 不能出现两个命名参数同名的情况 理解参数 ECMAScript 函数的参数与大多数其他语言中函数的参数有所不同
当一个字符串中没有数字开头时用如果用parseint()取出字符串中的数据时会得到返回值NaN,NaN指not a number。...2.3.6布尔值(Boolean) JS的布尔值和Python不同,这里的true和false都是小写,另外空字符串、0、null、undefined、NaN都是false。...undefined表示当声明一个变量但未初始化时,该变量的默认值是undefined,另外函数无明确返回值时,反悔的也是undefined。...不同,JS的return只能return 一个值,如果想return多个值,需要将其 存入一个数组中,然后将数组return出来*/ } 2.10.1函数中的arguments参数 arguments...变量的生命周期 局部变量会在函数运行以后被删除 全局变量会在页面关闭后被删除 作用域 先在函数内部找,如果找不到就去函数外部找,一层一层的找,这点与python的作用域很像。
栈(stack):由编译器自动分配释放,存放函数的参数值,局部变量等; 堆(heap):一般由程序员分配释放,若程序员不释放,程序结束时可能由操作系统释放。...null表示一个对象被定义了,但存放了空指针,转换为数值时为0。 undefined表示声明的变量未初始化,转换为数值时为NAN。...将string作为十进制数字的字符串解析; parseInt的第二个参数radix为1时,解析结果为NaN; parseInt的第二个参数radix在2—36之间时,如果string参数的第一个字符(除空白以外...环境由闭包创建时在作用域中的任何局部变量组成。在我们的例子中,myFunc 是一个闭包,由 displayName 函数和闭包创建时存在的 "Mozilla" 字符串形成。...两个函数: JSON.parse(str) 解析JSON字符串 把JSON字符串变成JavaScript值或对象 JSON.stringify(obj) 将一个JavaScript值(对象或者数组)转换为一个
因此,将原本声明为 boolean 类型的局部变量,赋值为除了 0、1 之外的整数值,在 Java 虚拟机看来是“合法”的。...通常我们可以认定 char 类型的值为非负数。这种特性十分有用,比如说作为数组索引等。 在前面的例子中,我们能够将整数 2 存储到一个声明为 boolean 类型的局部变量中。...当然,这种情况仅存在于局部变量,而并不会出现在存储于堆中的字段或者数组元素上。...因此,当我们将一个 int 类型的值,存储到这些类型的字段或数组时,相当于做了一次隐式的掩码操作。...在将 boolean、byte、char 以及 short 的值存入字段或者数组单元时,Java 虚拟机会进行掩码操作。在读取时,Java 虚拟机则会将其扩展为 int 类型。
当执行一系列的运算时,随着舍入误差的积累,运算结果会越来越不精确。...如果是undefined、null、NaN会调用String()函数取得字符串值’undefined’、’null’、’NaN’,再按照情形(2)进行运算 算数运算符-、*、/、和%在计算之前都会尝试将其参数转换为数字...,简单总结如下: (1)如果两个操作数都是数值,执行常规运算 (2)如果有一个数是NaN,则结果是NaN (3)如果有一个操作数字符串、布尔值、null或undefined,则先调用Number()方法将其转换为数值...逻辑运算符||、&&可以接受任何值作为参数,会将参数隐式的强制转换成布尔值。JavaScript中有6个假值:false、0、“”、NaN、null和undefined,其他所有的值都为真值。...也就是变量的作用域是整个函数,在=语句出现的位置进行赋值。下面第一种方式会被JavaScript隐式地提升声明部分,等价于第二种方式那样。建议手动提升局部变量的声明,避免混淆。
将-Infinity 与一些有限数字进行比较: -Infinity true -Infinity < -Number.MAX_SAFE_INTEGER...在第一次for()迭代中,最小值成为第一项。 5. Infinity 的的一些坑 我们很可能不会经常使用Infinity值。 但是,值得知道何时会出现Infinity值。 5.1....: parseInt('10', 10); // => 10 parseInt('Infinity', 10); // => NaN 5.2 JSON 序列化 JSON.stringify()将Infinity...Infinity但是当字符串化为JSON时,"salary"值将变为null。...如果尝试确定一个空数组的最大值或最小值,那结果后面人感到意外。 总结 JS中的Infinity表示无穷数的概念。 任何有限数均小于Infinity,而任何有限数均大于-Infinity。
中不区分整数值和浮点数值,java中所有数字均使用浮点数值表示· 转换: ·parseIne(变量名) 将某个值转换成数字,不成功则返现NaN ·parseFloat(变量名)将某个值转换成浮点数...,不成功则返现NaN 特殊值: ·NaN:非数字,可使用isNaN(num)来判断· ·Infinity:无穷大,可使用isFinite(num)来判断· 更多数值计算: 常量 Math.E...布尔类型仅包含真假,与python不同的是,python第一个字母是大写,("True","False"),则JavaScript里是小写("true","false") · == (比较值相等)...序列化 ·JSON.parse(str) 反序列化 a = 3 3 JSON.stringify(a) (将a序列化成字符串) "3" JSON.parse(a)...中封装了所有的实际参数· 2·作用域 javascript中每个函数都有自己的的作用域,当出现函数嵌套时,就出现了作用域链,当内层函数使用变量时,会根据作用域链从内到外一层层的循环,如果不存在则异常·
领取专属 10元无门槛券
手把手带您无忧上云