乱七八糟的知识点和一些面试题
深入浅出妙用 Javascript 中 apply、call、bind
1.任何对象都有属性,但只有DOM对象才有属性节点(attributes);
2、行内元素(display: inline)的height、width、内/外边距的bottom、top(padding-top、padding-bottom、margin-top、margin-bottom)均不可改变
3、文本不换行,显示省略号
.nowrap{
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
4、解释型语言的特性: 非独立性、效率低。
5、求数组的最大值
function max(arr){
//方法一:
var max = Math.max.apply(null, arr);
//方法二:
max = Math.max(...arr);
//方法三:
arr.sort(function(a, b){ return b-a; })
max = arr[0];
return max;
}
6、CSS3新属性
calc() = calc(四则运算): width: calc(100% - 100px);
7、给出两个数R和n,输出R的n次方
function power(R, n){ //判断R的小数点位数 var str = R.toString(); var index = str.indexOf(".");
//计算小数点位数 var num = str.length - index -1; var i = Math.pow(10, num); R = R * i; var sum = Math.pow(R, n); sum = sum / Math.pow(i, n) return sum; }
8、在HTTP协议中:https://www.cnblogs.com/wqhwe/p/5407468.html
1、HTTP协议是无状态的
2、状态码307表示临时重定向
3、RESTful接口中,利用HTTP协议的method字段来描述要对资源的操作方式,比如:GET表示获取资源, POST表示新增一个资源,PUT表示更新资源,DELETE表示删除资源等。
9、DOM的操作,常用的有哪些,如何创建、添加、移除、移动、复制、查找节点?
创建:
creatDocumentFragment() //创建一个DOM片段
createElement() //创建一个具体元素
creatTextNode() //创建一个文本节点
添加:
appendChild()
移除:
removeChild()
替换:
replaceChild()
插入:
insertBefore()
复制:
cloneNode(true)
查找:
getElementById()
getElementsByTagName()
getElementsByClassName()
getElementsByName()
10、CSS实现网页调用服务端字体:https://blog.csdn.net/qq_35772366/article/details/54896418
11、元素垂直居中(元素高度未知)
//1、table-cell
.middle{
display: table-cell;
vertical-align: middle;
}
//2、transform: translate(50%)
.middle{
display: absolution;
top: 50%;
transform: translateY(-50%);
}
//display: flex
display: flex;
align-item: center;
12、主流浏览器
浏览器 内核 特定属性前缀
IE trident -ms-
chrome webkit/blink -webkit-
opera presto/blink -o-
firefox gecko -moz-
Safari webkit -webkit-
13、parseInt() 和 toString()
var num = 10000;
num = parseInt(num, 2); //把二进制变量num转换为10进制数字
// 16
num.toString(16); 把十进制变量num转换为16进制字符串
10
14、&& (且)、 ||(或) 和 | (按位或)、& (按位与)运算符
//&&运算符遇到假(false)就停
var num = 2 && 0 && 2; //0
//||运算符遇真就停
var num = 0 || 2 || 3; //2
//| 按位或运算符
//参加运算的两个对象,按二进制位进行“或”运算。
//运算规则:0|0=0; 0|1=1; 1|0=1; 1|1=1;
//即 :参加运算的两个对象只要有一个为1,其值为1
var num = 3 | 4; //7
//3 => 011
//4 => 100
//&按位与运算符
//运算规则:0&0=0; 0&1=0; 1&0=0; 1&1=1;
// 即:两位同时为“1”,结果才为“1”,否则为0
var num = 3 & 4; //0
//3 => 011
//4 => 100
15、变量声明 声明提升
函数声明 整体提升
16、任何未经声明就直接赋值的变量归window所有;
一切声明的全局变量,全是window的属性
17、并不是所有对象都继承自Object(Object.create(null));
17、JavaScript语言可以正常计算的范围是:小数点前后十六位
18、为什么 0.1+0.2 != 0.3 ()
19、call / apply 改变this指向
call( object, 参数 ) :需要把实参按照形参的个数传进去
apply( object, [...] ) :需要传一个arguments
共同点:功能均是改变this指向
不同点:传参列表不同
20、非首位子元素选择符: .list li + li (元素list类任意跟在li后面的li)
21、数字 + 字符 = 字符
数字 + Boolean = 数字
数字 + null = 数字
数字 + undefined = NaN
22、函数名.length => 形参数量
arguments.length => 实参数量
23、匿名函数表达式(简称:函数表达式)
命名函数表达式
24、数组常用的方法:
改 变 原 数 组: push() pop() shift() unshift() splice() reverse()
不改变元素组:concat() join() split() toString() slice()
25、
4>3>2 => false
应依次计算: 4>3返回true;
true>2 = 1>2 返回false
26、命名空间:管理变量,防止污染全局,适用于模块开发
var huangInit = (function() {
var name = "huang";
function callName() { console.log(name) }
return {callName : callName}
}())
var huang = huangInit();
27、单词太长换行显示:word-wrap:break-word;word-break:break-all;
28、jQuery获取定位元素的top和left值: $("selector").position().left/top