例3: 1 + -"1" + "2" 输出: "02" 解释:这里的解释和前一个例子雷同,除了此处的一元运算符是 - 而不是 +。先是 "1" 变为 1,然后当应用 - 时又变为了 -1 ,然后将其与 1相加,结不雅为 0,再将其转换为字符串,连接最后的 "2" 运算对象,获得 "02"。
例4: +"1" + "1" + "2" 输出: "112" 解释:固然第一个运算对象 "1"因为前缀的一元 + 运算符类型转换为数值,但又急速转换回字符串,当连接到第二个运算对象 "1" 的时刻,然后又和最后的运算对象"2" 连接,产生了字符串 "112"。
要答复这个问题,你须要精确懂得JavaScript的事宜和时光设置。
例5: "A" - "B" + "2" 输出: "NaN2" 解释:因为运算符 - 不克不及被应用于字符串,并且 "A" 和 "B" 都不克不及转换成数值,是以,"A" - "B"的结不雅是 NaN,然后再和字符串 "2" 连接,获得 "NaN2" 。
例6: "A" - "B" + 2 输出: NaN 解释:拜见前一个例子, "A" - "B" 结不雅为 NaN。然则,应用任何运算符到NaN与其他任何的数字运算对象,结不雅仍然是 NaN。
16.下面的递归代码在数组列表偏大年夜的情况下会导致客栈溢出。在保存递归模式的基本上,你怎么解决这个问题?
- var list = readHugeList();
- var nextListItem = function() {
- var item = list.pop();
- if (item) {
- // process the list item... nextListItem();
- }
- };
潜在的客栈溢出可以经由过程修改nextListItem 函数避免:
- var list = readHugeList();
- var nextListItem = function() {
- var item = list.pop();
- if (item) {
- // process the list item... setTimeout( nextListItem, 0);
- }
- };
客栈溢出之所以会被清除,是因为事宜轮回把持了递归,而不是调用客栈。
17.JavaScript中的“闭包”是什么?请举一个例子。
下面是一个简单的例子:
- var globalVar = "xyz";
- (function outerFunc(outerArg) {
- var outerVar = 'a';
- (function innerFunc(innerArg) {
- var innerVar = 'b';
- console.log( "outerArg = " + outerArg + "" + "innerArg = " + innerArg + "" + "outerVar = " + outerVar + "" + "innerVar = " + innerVar + "" + "globalVar = " + globalVar);
- })(456);
- })(123);
在膳绫擎的例子中,来自于 innerFunc, outerFunc和全局定名空间的变量都在 innerFunc典范围内。是以,膳绫擎的代码将输出如下:

网友点评
精彩导读
科技快报
品牌展示