总结本知识点
Math.round(2.5) //3
+ new Array(017); //NaN
//017为八进制,所以是new Array(15);+会将后面的参数转化为数字类型。这里就是对empty*15 进行Number转化,所以为NaN。
function test(a){
a ^= (1<<4)-1;
return a;
}
test(10); //5
//1<<4:1左移4位,即1*2的4次方 = 16 -1 =15;
//10异或15,为5
//声明函数的几种方法:
function a(){
}
var a = function(){
}
var a = new Function();
var aa = function b(){
console.log(123);
}
aa(); //123
b(); //报错,在函数外部无法通过b访问到函数
function check(){
console.log("haha");
}
setTimeout(check(),2000); //立即调用
setTimeout(check,2000); //2s后调用
setTimeout('check()',2000); //2s后调用
console.log(1+"2"+"2"); //"122"
console.log(1++"2"+"2"); //"32" +"2"将字符串转为2
console.log("A"-"B"+"2"); //"NaN2" NaN与字符串合并
console.log("A"-"B"+2); //NaN 加法中有一个为NaN,结果就为NaN
图片加载问题:
1.只要是img src引用的都会请求。
2.background:url()所属样式如果挂靠在某个元素上,就一定会请求;单独写这么一个样式则不会请求。
mark标签:高亮显示文本(默认是黄底黑字)
ins标签的文字会带下划线
del显示删除的文本
innerHTML,outterHTML,innerText,outerText
<div id="div1"> <p> text is div </p> </div>
var oDiv = document.getElementById('div1');
oDiv.innerHTML; //<p> text is div </p>
oDiv.innerText; //text is div
oDiv.outerHTML; // <div id="div1"> <p> text is div </p> </div>
oDiv.outerText; //text is div
word-break,white-space,letter-spacing,word-spacing
/*规定自动换行的处理方法:浏览器的默认换行规则;允许在单词内换行;只能在半角空格或连字符处换行*/
word-break:normal | break-all | keep-all
/*处理元素内的空白:空白会被浏览器忽略;空白会被浏览器保留(相当于pre标签);文本不会换行,直到遇到br标签为止*/
white-space:normal | pre | nowrap
/*增加或减少字符间的空白(字符间距):默认,规定字符间没有额外的空间;定义字符间的固定空间(允许负值)例如3px;规定从父元素继承*/
letter-spacing:normal | length | inherit
/*增加或减少单词间的空白(word间距):默认,规定字符间没有额外的空间;定义字符间的固定空间(允许负值)例如3px;规定从父元素继承*/
word-spacing:normal | length | inherit
disabled与readonly
disabled指当input元素加载时禁用此元素。input内容不会随着表单提交。
readonly规定输入字段为只读,输入框无法通过直接键入进行修改。input的内容会随着表单提交。
无论设置readonly还是disabled,通过js脚本都能更改input的value。
jquery的width,height等属性
width():设置或返回元素的宽度(不包括内边距、边框、外边距)
height():设置或返回元素的高度(不包括内边距、边框、外边距)
innerWidth():返回元素的宽度(包括内边距)
innerHeight():返回元素的高度(包括内边距)
outerWidth():返回元素的宽度(包括内边距和边框)
outerHeight():返回元素的高度(包括内边距和边框)
outerWidth(true):返回元素的宽度(包括内边距、边框、外边距)
outerHeight(true):返回元素的高度(包括内边距、边框、外边距)
onload与$().ready
window.onload : dom文档树加载在完和所有文件加载完之后执行的函数。load事件。 写多次onload事件,会执行最后一次。
$().ready():在dom树加载完后。不用等图片和非文字媒体。 DOMContentLoaded事件。 写多次,会按照顺序执行。
//写法
$(document).ready(function(){
})
$(function(){
});
$().ready(function(){
});
jQuery().ready(function(){
});
jquery的bind()与live()
bind() 方法为被选元素添加一个或多个事件处理程序,并规定事件发生时运行的函数。
live() 方法为被选元素附加一个或多个事件处理程序,并规定当这些事件发生时运行的函数。通过 live() 方法附加的事件处理程序适用于匹配选择器的当前及未来的元素(比如由脚本创建的新元素)。
$(selector).bind(event,data,function)
$(selector).live(event,data,function)
bind绑定事件与live绑定事件的差别
live会给所有匹配的元素加一个事件处理函数,即使这个元素是以后再添加进来的也有效。而bind就不会,当没有元素的时候,是添加不上的。
live方法是基于“事件委托”的,所谓的“事件委托”指的是,绑定在祖先元素上的事件可以在其后代元素上进行使用。在页面加载到live方法的时候,live方法会去判断DOM中是否存在目标控件节点,如果没有找到,就一层一层的向上冒泡,将事件“委托”到DOM根节点上。
mouseover/mouseout,mouseenter/mouseleave
使用mouseover/mouseout时,如果鼠标移动到子元素上,即使没有离开父元素,也会触发父元素的mouseout事件。
使用mouseenter/mouseleave时,如果鼠标没有离开父元素,在其子元素上任意移动,也不会触发父元素的mouseleave事件。
in/for-in,
1.Object.hasOwnProperty(“xxx”): 不包括原型链上的方法
2.in 不管在原型链,还是对象的属性,都包括。
3.for…in 可枚举的,原型链+对象,但原型链上的属性都默认设置了不可枚举。 用于遍历对象属性名。
4.Object.keys() 对象自身可枚举,返回 属性名的数组
5.Object.getOwnProperyNames() 实例中的所有属性,无论是否可枚举,不包括原型,返回属性名的数组。
- for…of 用来遍历数组(数组元素值)
总结:
原型链 + 对象自身 : in(所有) ,for…in(可枚举)
对象自身: getOwnPropertyNames(自身所有,除了Symbol),keys(自身可枚举),hasOwnPrperty()
函数提升 比变量提升 在前面。
全局变量不能通过delete删除。window上的属性可以被删除。