你可以打开你的Chrome开发者控制台,windows用户按住 Ctrl + Shift + J,Mac用户按Cmd + Option + J打开控制台。这会允许你再你的浏览器里输入下面所有的代码,所以你可以实时的看到发生什么了。
我也没有开玩笑,在JavaScript中,当加号操作符放在number 和 boolean这两个类型的值之间的时候,boolean类型的值将会转化成number类型的值。
如果你还记得我之前的JavaScript Showdown这篇文章,false == 0 和 true == 1,记得这个的话,3 + true 就转化成 3 + 1,然后我们就会得到4这个答案了。
这个跟上面的例子是一个逻辑。当加号操作符放在两个booleans值之间的时候,这两个booleans值都会转化成numbers类型的值,因此true + false 就转化成 1 + 0,然后我们就得到1这个答案了。
那当我们把一个string类型的数字加上一个真的number类型的数字会发生什么呢?当加号操作符被放在两个操作数之间的时候,一个数是string类型的一个字符串,那么它会把其它 number 或者 boolean转化成字符串然后用字符串连接它们。
从这个逻辑看:'4' + 8 变成 '4' + '8' 然后我们就得到 '48'这个答案了
和上面的例子相似,JavaScript将会把boolean类型的值转化成string类型的值然后进行字符串连接。这会变成'true' + '4',结果就变成'true4'。
操作符的顺序很重要,在这个例子中,JavaScript认为第一个+优先级比其它的优先级高:1 + 1 就等于 2了。然后我们继续,再加上一个string类型的值'1'。多个数相加级联的结果是'21'
这里有事件链:
1 + 1 + '1'
2 + '1'
'21'
当我们把字符串类型的值放在最前面会有什么改变呢?记住操作符的顺序并且从左到右相加。
'1' + 1 + 1
'11' + 1
'111'
string + number = string,因此在这里例子中我们得到了一个长字符串'111'。
如果我们尝试在string前面加上一个负号然后再加上一个number类型的值呢?你现在应该知道,如果没有这个负号,我们的答案将会是'6969',然而,这个负号改变了这个结果。
在'69'之前的减号是一个一元操作符,事实上它会把string 转化成 number类型并且把它变成负数。因此我们的等式就变成-69 + 69,它等于0。
那如果我们的一元操作符是在一个字符串前面,并且这个字符串不能转化成一个数会怎么样呢?当JavaScript在生成数字失败的时候,我们会得到NaN (Not A Number不是一个数字)这个值。
classList是一个DOMTokenList的对象,用于在对元素的添加,删除,以及判断是否存在等操作。以及如何兼容操作
js的原型链,得出了一个看似很简单的结论。对于一个对象上属性的查找是递归的。查找属性会从自身属性(OwnProperty)找起,如果不存在,就查看prototype中的存在不存在。
arguments是什么?在javascript 中有什么样的作用?讲解JavaScript 之arguments的使用总结,包括arguments.callee和arguments.calle属性介绍。
WebSocket是HTML5下一种新的协议,为解决客户端与服务端实时通信而产生的技术。其本质是先通过HTTP/HTTPS协议进行握手后创建一个用于交换数据的TCP连接
HTML文档在浏览器解析后,会成为一种树形结构,我们需要改变它的结构,就需要通过js来对dom节点进行操作。dom节点(Node)通常对应的是一个标题,文本,或者html属性。
javascript中基本类型指的是那些保存在栈内存中的简单数据段,即这种值完全保存在内存中的一个位置。 引用类型指那些保存在堆内存中的对象,意思是变量中保存的实际上只是一个指针,这个指针指向内存中的另一个位置,该位置保存对象。
apply 、 call 、bind 三者都是用来改变函数的this对象的指向的;第一个参数都是this要指向的对象,也就是想指定的上下文;都可以利用后续参数传参;bind 是返回对应函数,便于稍后调用;apply 、call 则是立即调用 。
在js中有句话叫一切皆对象,而几乎所有对象都具有__proto__属性,可称为隐式原型,除了Object.prototype这个对象的__proto__值为null。Js的prototype属性的解释是:返回对象类型原型的引用。每个对象同样也具有prototype属性,除了Function.prototype.bind方法构成的对象外。
Js支持“=”、“==”和“===”的运算符,我们需要理解这些 运算符的区别 ,并在开发中小心使用。它们分别含义是:= 为对象赋值 ,== 表示两个对象toString值相等,=== 表示两个对象类型相同且值相等
js的变量分为2种类型:局部变量和全局变量。主要区别在于:局部变量是指只能在变量被声明的函数内部调用,全局变量在整个代码运行过程中都可以调用。值得注意的js中还可以隐式声明变量,而隐式声明的变量千万不能当做全局变量来使用。
内容以共享、参考、研究为目的,不存在任何商业目的。其版权属原作者所有,如有侵权或违规,请与小编联系!情况属实本人将予以删除!