疑问JavaScript

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了疑问JavaScript相关的知识,希望对你有一定的参考价值。

1.内部元素触发事件,会产生事件冒泡,一一到达父元素。
比如<a><b><c attr="a"></c></b></a>。
我点击c触发click事件,是否可以将c的attr属性附带在event对象中传递给后续的绑定了事件处理函数的父元素呢?
然后,冒泡来到b,可以认为b也触发了click事件,那么最终当事件来到a时,a了监听事件,在a的事件处理函数中,可以通过event.target获得最初触发click事件的元素c,然而我是否可以获得同样触发了click事件的元素b呢?
2.<noscript>标签在chrome下,首次加载会给里面的内容套上""而使得所有内容变成文本显示在页面中,再次刷新后""消失,所有标签以正常呈现。
3.在ff控制台下,执行:
function f(){
  var a ="a";
  console.log(a);
  console.log(a);
}
f()
再剪切掉第四行,执行:
function f(){
  var a ="a";
  console.log(a);
}
f()
最后按下ctrl+z返回剪切前的状态,再执行,会显示第四行出错 ReferenceError: a is not defined

4.if(!!object){...}的写法,!!object是否会先以!obejct转换成false然后再通过!转换成true,以此加快速度?
5.Object > Function 而new Object < new Function 这是在搞什么啊
6.直接delete a ,在控制台是可行的,但是写在代码里在编译期会报错:
SyntaxError: applying the ‘delete‘ operator to an unqualified name is deprecated
7.
var o = 9;
(function(){
  var o = o;
  console.log(o)
})();//这里漏了分号,会报错 (intermediate value)(...) is not a function
(function(){
  console.log(o)
})()

以上代码会console
9
undefined

第一个之所以不console.log(9),是因为流程如下:
var o;//undefined
o = o;//undefined

10.42.toFixed(3)会报错SyntaxError: identifier starts immediately after numeric literal,而42.0.toFixed(3)不会。
可能是因为前者将点号,认作小数点了

11.在子元素中写ng-if,子元素绑定click:切换作用域属性使得ng-if为false,父元素中写事件委托给子元素绑定click:console.log(‘a‘)。
点击子元素时不会执行父元素的事件委托。
可能是因为在子元素绑定click的执行中销毁了子元素dom,使得当事件传递至父元素时,父元素查找dom找不到子元素的存在了,所以没有执行事件委托。
11.1 这个问题的引申:结果父元素的事件委托一直存在,所以不注意事件委托消除的话会产生问题。
12.post能否单post一个值而不是对象?get呢?
13.for-in能遍历到原型继承中的属性,但为什么for-in不能遍历到[].slice?
var F = function(){
 
}
F.prototype = {
  a:2
}
var Q = function(){

}
Q.prototype = new F;

var b = new Q
for(var i in b){
  console.log(i + ":" + b[i])//能打印"a:2"
}
14.重复点击会产生重复的ajax,如何避免?
15.闭包导致内存泄露。给elem绑定事件时,事件处理函数的作用域链上的对象是否一直会被保持呢?这样是否就会导致内存泄露?
https://segmentfault.com/a/1190000002778015
总结一下 为什么嵌套函数在被return之后可以继续引用父函数作用域内的局部变量?
其关键在于 嵌套函数被return后,其作用域链 仍然指向 其父函数产生的活动对象。
16.
var d = new Date;
d.setMonth(5);
d.setDate(-1);
console.log(d.getMonth());
console.log(d.getDate())
17.如何给一个对象添加指向其原型的不可见super属性?
18. 0.2-0.1 === 0.1; 0.8-0.6 !== 0.2//实际会是0.2000...7
这个应该是二进制的问题?究竟什么时候会出现bug?
















































































以上是关于疑问JavaScript的主要内容,如果未能解决你的问题,请参考以下文章

javascriptjavascript常用函数大全

javascriptJavaScript数组常用方法

javascriptjavascript设计模式之工厂模式

JavaScriptJavascript闭包

JavaScriptJavascript闭包

JavaScriptJavaScript中的时间函数