scrollWidth:对象的实际内容的宽度,不包边线宽度,会随对象中内容超过可视区后而变大。clientWidth:对象内容的可视区的宽度,不包滚动条等边线,会随对象显示大小的变化而改变。offsetWidth:对象整体的实际宽度,包滚动条等边线,会随对象显示大小的变化而改变。
.size {
font-size:10px;
-webkit-transform:scale(0.8);
display:block;
}
<div class="size">我是十号字</div>
//es6的new Set()方式
let array=[1,2,3,4,5,6,2,3];
[...new Set(array)]
'abc' === 'abc' // true
1 === 1 // true
[1,2,3] === [1,2,3] // false
{a: 1} === {a: 1} // false
{} === {} // false
var name = 'World!';
(function () {
if (typeof name === 'undefined') {
var name = 'Jack';
console.log('Goodbye ' + name);
} else {
console.log('Hello ' + name);
}
})();
理解这个,我们可以先看下面的题目:
var x = 1; // Initialize x
console.log(x + " " + y); // '1 undefined'
var y = 2;
相当于
var x = 1; // Initialize x
var y; // Declare y
console.log(x + " " + y); // '1 undefined'
y = 2; // Initialize y
所以上面的自调用函数可以如下理解:
var name = 'World!';
(function () {
var name;
if (typeof name === 'undefined') {
name = 'Jack';
console.log('Goodbye ' + name);
} else {
console.log('Hello ' + name);
}
})();
输出结果:
Goodbye Jack
(function(){
var x = y = 1;
})();
console.log(y);
console.log(x);
输出结果:
1
Uncaught ReferenceError: x is not defined
// 这道题涉及了异步、作用域、闭包
// 因为是setTimeout是异步的。正确的理解setTimeout的方式(注册事件): 有两个参数,第一个参数是函数,第二参数是时间值。 调用setTimeout时,把函数参数,放到事件队列中。等主程序运行完,再调用。
for(var i = 1; i <= 3; i++){ //建议使用let 可正常输出i的值
setTimeout(function(){
console.log(i);
},0);
};
输出结果:
4 4 4
undefined null number string boolen
console.log(8+'9') // '89'
console.log(null == undefined ) // true
var str = 'asdfssaaasasasasaa';
var json = {};
for (var i = 0; i < str.length; i++) {
if(!json[str.charAt(i)]){
json[str.charAt(i)] = 1;
}else{
json[str.charAt(i)]++;
}
};
var iMax = 0;
var iIndex = '';
for(var i in json){
if(json[i]>iMax){
iMax = json[i];
iIndex = i;
}
}
console.log('出现次数最多的是:'+iIndex+'出现'+iMax+'次');
// 字符串转化为 对象
var jsonString = '[{"name":"天鸽"},{"name":"梅花"},{"name":"台风"}]';
var jsArr = JSON.parse(jsonString);
jsArr.push({"name":"帕卡"});
console.log(jsArr);
// 把js对象 数组 转化为 JSON格式的字符串
var result = JSON.stringify(jsArr);
console.log(result);
var boo = '11' + 2 - '1'
console.log(boo) // 111
console.log(typeof boo) // number
“事件冒泡”:事件开始由最具体的元素接受,然后逐级向上传播
“事件捕捉”:事件由最不具体的节点先接收,然后逐级向下,一直到最具体的
“DOM事件流”:三个阶段:事件捕捉,目标阶段,事件冒泡
var a = null;
alert(typeof a);
输出结果:object 解释:null是一个只有一个值的数据类型,这个值就是null。表示一个空指针对象,所以用typeof检测会返回”object”。
currentTarget当前所绑定事件的元素
target当前被点击的元素
export default xxx
import xxx from './'
export xxx
import {xxx} from './'
var days = ['日','一','二','三','四','五','六'];
var date = new Date();
console.log('今天是星期' + days[date.getDay()]);
如果浏览器支持 Array.isArray()可以直接判断否则需进行必要判断
function isArray(arg) {
if (typeof arg === 'object') {
return Object.prototype.toString.call(arg) === '[object Array]';
}
return false;
}
forEach更多的用来遍历数组
for in 一般常用来遍历对象或json
for of数组对象都可以遍历,遍历对象需要通过和Object.keys()
for in循环出的是key,for of循环出的是value
let a = 1;
let b = 2;
[a,b] = [b,a];
本文系转载,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文系转载,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。