布局、选择器、权重、盒模型、Hack、CSS预处理器,页面加载如何优化
Flexbox、Document flow 优雅降级与渐进增强
JavaScript:
数据类型、运算、对象、Function、继承、闭包、作用域、事件、Prototype、RegExp、JSON、Ajax、DOM、BOM、
内存泄漏、跨域、异步请求、模板引擎、模块化、Flux、同构、算法、ECMAScript6、Nodejs、HTTP
ajax的优缺点
vue angular 小程序 git webpack
解释一下变量声明提升
如何跨域访问
js如何判断一个数组
作用域
含义:变量的作用范围
作用:减少名字冲突,增强代码的可靠性
定义:
局部:变量在函数内声明,变量为局部作用域。局部变量:只能在函数内部访问。因为局部变量只作用于函数内,所以不同的函数可以使用相同名称的变量。局部变量在函数开始执行时创建,函数执行完后局部变量会自动销毁。
全局:变量在函数外定义,即为全局变量。全局变量有全局作用域: 网页中所有脚本和函数均可使用。如果变量在函数内没有声明(没有使用 var 关键字),该变量为全局变量。JavaScript 变量生命周期在它声明时初始化。局部变量在函数执行完毕后销毁。全局变量在页面关闭后销毁。 你的全局变量,或者函数,可以覆盖 window 对象的变量或者函数。
局部变量,包括 window 对象可以覆盖全局变量和函数。
字符串
字符串无法解析的时候可以用转义字符
字符串可以是对象,通常JavaScript 字符串是原始值,可以使用字符创建: var firstName = "John",但我们也可以使用 new 关键字将字符串定义为一个对象: var firstName = new String("John")
空文本 + 数字得到的运算结果都是把数字转成字符串,无论文本有多少个空格。但是空格会计入长度。html会压缩空格
数字和布尔值相加,布尔值 false 转成 0,true 转成 1
true+1=2
取模运算的结果符号只与左边值的符号有关:
var x = 7 % 3; // 结果为 1
var y = 7 % (-3); // 结果为 1
var z = (-7) % 3; // 结果为 -1
数字与 null(空值) 相加,null 转化为数字 0:
var car=null+3+4; // 结果为7
运算
多元运算:
https://c.runoob.com/codedemo/3057
function test(p){
var a=5,b=12;
return p>1?p<b?p>b:p=6:p=3; // 这一行中出现了多个问号和冒号,看起来很乱怎么办呢
}
document.write(test(9));//false
三目运算:
8>5 ? true : false ;
其他数据类型转换为布尔类型的规则: null、undefined、0、NaN、空字符串转换为false,其他转化为 true。
- 取反 !
首先把数据转化为布尔值,然后取反,结果为 true 或 false。
<script type="text/javascript">
var a = [1,2,3];
var b = "hello";
var obj = new Object();
var d;
console.log(!""); //true
console.log(!d); //true
console.log(!a); //false
console.log(!b); //false
console.log(!obj); //false
</script>
- 逻辑与 &&
JavaScript 中逻辑与和其他语言不太一样,如果第一个操作数是 true(或者能够转为 true),计算结果就是第二个操作数,如果第一个操作数是 false,结果就是 false(短路计算),对于一些特殊数值不遵循以上规则。(个人理解为:如果运算的第一个操作数为true,则返回第二个操作数,反之则返回第一个操作数)
<script type="text/javascript">
var a = [1,2,3];
var b = "hello";
var obj = new Object();
var d;
console.log(true && 10); //第一个操作数是true,结果是第二个操作,也就是10
console.log(false && b); //第一个操作数是false,结果flase
console.log(100 && false); //第一个操作数是100,结果flase
console.log(undefined && false); //第一个操作数是undefined,结果undefined
console.log(NaN && false); //第一个操作数是NaN,结果NaN
console.log(null && false); //第一个操作数是null,结果null
console.log('' && false); //第一个操作数是空串,结果空串
console.log(0 && 100); //结果是0
console.log(5 && 100); //100
console.log(a && b); //hello
console.log(obj && 200); //200
</script>
undefined和null
null是一个只有一个值的特殊类型。表示一个空对象引用(一个变量不再指向任何对象地址);可以主动释放一个变量引用的对象,表示
null是对象所以可以来清空对象,任何变量都可以通过设置值为 undefined 来清空。 类型为 undefined.
一元运算符 +
Operator + 可用于将变量转换为数字:
var y = "John"; // y 是一个字符串
var x = + y; // x 是一个数字 (NaN)
网友评论