1:两次取反操作!!--------------------将目标对象转变成对应的boolean类型而已。取反操作“!”会得到与目标对象代表的布尔型值相反的布尔值,而再做一次取反就得到了与其相同的布尔值。Boolean(xx)和!!xx是一样的。
以a两次取反为例:
如果a是0;两次取反当然是false;
如果a是null;两次取反是false;
如果a是undefined;两次取法是false;
其余的,两次取反是true。
2:短路操作符 || &&
(创建对象时注意前面的取反) 如果mob存在就不执行后面的返回本身,mob不存在则创建一个新对象,开辟一个纯净的内存空间,返回新对象。
(判断对象时)
等号右边为表达式先执行或运算。如果window.jjmatch存在则不执行后面的返回本身,不存在就用个空对象赋值,返回空对象。
当&&时,找到为false的分项就停止处理,并返回该分项的值,否则执行完,并返回最后分项的值。
当||时,找到为true的分项就停止处理,并返回该分项的值,否则执行完,并返回最后分项的值。
&& 优先级高于 ||。
3:前后端分离调试------->前后端数据格式约定,前端根据后端返回的数据进行页面的拼接。
开发阶段:本地通过数据造假、复写的形式调试;
线上测试阶段:尽可能的在console.log里直接调试;
从用户的角度对不同状态进行复现。
测试账号1:name1 password1 无兑换资格
测试账号2:name2 password2 有兑换资格
4:渐变效果、特殊边框------->背景色 + 渐变图 + repeat方式。
4.1 内容区两栏背景色--------先来个最基本的背景用图片repeat-y的方式保证整体页面背景平滑,然后根据需要在不同内容区开发渐变效果。
4.2 从底部向头部渐变----- 背景色为渐变图最顶部颜色 + 渐变图bottom对齐 + repeat-x