【疑问】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?

时间: 2024-10-01 07:44:45

【疑问】JavaScript的相关文章

JavaScript筑基篇(二)-&gt;JavaScript数据类型

说明 介绍JavaScript数据类型 目录 前言 参考来源 前置技术要求 JavaScript的6种数据类型 哪6种数据类型 undefined 类型 null 类型 boolean 类型 number 类型 string 类型 复杂 类型 基本型和引用型的不同 关于数据类型的一些常见疑问 为什么typeof null === 'object' string,String,object,Object,function,Function的关系 关于String类型与string类型的疑问 fun

也说Javascript对象拷贝及疑问

也说Javascript对象拷贝及疑问 一.浅拷贝 当我们需要将一个对象拷贝至另一个对象时,我们一般会这么实现 function shadowCopy(source,target){ var target=target||{}; for(var i in source) { target[i]=source[i]; } return target; } var a={name:'Lily',age:19}; var b=shadowCopy(a);//b={name:'Lily',age:19}

读阮一峰对《javascript语言精粹》的笔记,我有疑问。

<javascript语言精粹>是一本很棒的书籍,其中作者在附录列出了12种他所认为的javascript语言中的糟粕. 我最近开始跟读前端前辈的博客,其中读到了阮一峰的<12种不宜使用的Javascript语法>,有一个疑问: 文如下: 9. function语句 在Javascript中定义一个函数,有两种写法: function foo() { } 和 var foo = function () { } 两种写法完全等价.但是在解析的时候,前一种写法会被解析器自动提升到代码的

《JavaScript语言精粹》读书笔记——给类型增加方法一节的疑问

最近,在学习<JavaScript语言精粹>这本书,发现译者虽然有很好地翻译文章,却没有对文中有疑问的地方进行改正或加以注释.我接触JavaScript只有一年左右,可能无法很好的理解这门语言,而今天,读到第四章中4.7节——给类型增加方法时遇到了疑问之处: 文中给出了对类型增加方法的示例: Function.prototype.method = function (name, func) { this.prototype[name] = func; return this; }; 这里的示例

JavaScript单线程的疑问与解答

问: JavaScript是单线程的,有任务队列,比如使用setTimeou(func,secs)来在secs毫秒后向任务队列添加func.但是,setTimeout后面跟一个死循环,那么死循环导致任务被阻塞,也就是说func不能执行. 我想请教一下:死循环在执行的时候,secs毫秒过去的时候,func是否被添加到任务队列中?如果添加了,但JS是单线程的,不是在这个线程中添加的,那在哪里被添加的?求大神解答下,找乐很多东西,都是和JavaScript高级程序设计上的说法一样. 答: 原因是 JS

关于JavaScript new 的一些疑问

使用new操作符包括以下五个步骤(系统自动帮你完成): 1. 创建一个对象 var obj = new Object(); 2. 将对象的__proto__属性指向构造函数Object的原型对象 obj.__proto__ = Object.prototype; 3. 将this指针指向该对象 4. 执行构造函数内部代码 this.name = name; console.log(this.name); 5. 返回该对象 return obj; 因此: function Foo(name){ t

如何系统地学习JavaScript

在过去,JavaScript只是被用来做一些简单的网页效果,比如表单验证.浮动广告等,所以那时候JavaScript并没有受到重视.自从AJAX开始流行后,人们发现利用JavaScript可以给用户带来更好的体验,甚至利用这一优点开发了大型网页游戏,于是这门小语言被重视了起来.现在,很多公司会招专门的JavaScript工程师,通常JavaScript是WEB前端开发的必备技能.简单介绍了JavaScriptr的好处,并不代表大家就会去学习甚至把它学好,兴趣是很关键的,我认为兴趣是最好的老师,它

JavaScript基础-前端开发

理解作用域 理解作用域链是Js编程中一个必须要具备的,作用域决定了变量和函数有权力访问哪些数据.在Web浏览器中,全局执行环境是window对象,这也意味着所有的全局变量或者方法都是window对象的属性或方法.当一个函数在被调用的时候都会创建自己的执行环境,而这个函数中所写的代码就开始进入这个函数的执行环境,于是由变量对象构建起了一个作用域链. var wow = '魔兽世界'; var message = function(){ var _wow = '123'; } 在这个例子中全局环境中

MDN——javascript——入门——第三章对象——对象.构造函数.原型链.继承——知识点总结

对象Object 由属性property(变量).方法method(函数)组成 var objectName = { member1Name : member1Value, member2Name : member2Value, member3Name : member3Value } member(成员)的值是任意的, 一个如上所示的对象被称之为对象的字面量(literal)——手动的写出对象的内容来创建一个对象.不同于从类实例化一个对象,我们会在后面学习这种方式. 访问对象成员 1.点表示法