前端面试之前端基础2

null===undefined?

[]==’’ !![] !!’’

==会转换类型再比较,===直接比较、不是同一类型就是 false

1
2
3
4
5
6
7
8
var x = 1;
var obj = {
valueOf: function () {
x = 2;
return 0;
},
};
console.log(obj == 0, x);

输出 true,2

1
2
3
4
5
6
7
8
9
10
var x = 1;
var obj = {
valueOf: function () {
return {};
},
toString: function () {
return {};
},
};
console.log(obj == 0);

抛出了异常: Uncaught TypeError: Cannot convert object to primitive value。复合类型的数据(比如对象、数组、函数等)之间的比较不是比较他们的值是否相等,而是比较他们引用的对象是否一样,因此也不难明白,为什么 [] === [] 判断为 false 了

参考


f2cb070ec1654b4393e105d4e6d66f32.png


Cookie 的类别

  1. Session Cookie

这个类型的 cookie 只在会话期间内有效,即当关闭浏览器的时候,它会被浏览器删除。设置 session cookie 的办法是:在创建 cookie 不设置 Expires 即可。

  1. Persistent Cookie

持久型 cookie 顾名思义就是会长期在用户会话中生效。当你设置 cookie 的属性 Max-Age 为 1 个月的话,那么在这个月里每个相关 URL 的 http 请求中都会带有这个 cookie。所以它可以记录很多用户初始化或自定义化的信息,比如什么时候第一次登录及弱登录态等。

  1. Secure cookie

安全 cookie 是在 https 访问下的 cookie 形态,以确保 cookie 在从客户端传递到 Server 的过程中始终加密的。这样做大大的降低的 cookie 内容直接暴露在黑客面前及被盗取的概率。

  1. HttpOnly Cookie

目前主流的浏览器已经都支持了 httponly cookie。1.IE5+ 2.Firefox 1.0+ 3.Opera 8.0+ 4.Safari/Chrome。在支持 httponly 的浏览器上,设置成 httponly 的 cookie 只能在 http(https)请求上传递。也就是说 httponly cookie 对客户端脚本语言(JavaScript)无效,从而避免了跨站攻击时 JS 偷取 cookie 的情况。当你使用 javascript 在设置同样名字的 cookie 时,只有原来的 httponly 值会传送到服务器。

  1. 3rd-party cookie

第一方 cookie 是 cookie 种植在浏览器地址栏的域名或子域名下的。第三方 cookie 则是种植在不同于浏览器地址栏的域名下。例如:用户访问 a.com 时,在 ad.google.com 设置了个 cookie,在访问 b.com 的时候,也在 ad.google.com 设置了一个 cookie。这种场景经常出现在 google adsense,阿里妈妈之类的广告服务商。广告商就可以采集用户的一些习惯和访问历史。

  1. Super Cookie

超级 cookie 是设置公共域名前缀上的 cookie。通常 a.b.com 的 cookie 可以设置在 a.b.com 和 b.com,而不允许设置在.com 上,但是很不幸的是历史上一些老版本的浏览器因为对新增后缀过滤不足导致过超级 cookie 的产生。

vue 什么时候用 computed watch

1
2
3
<div id="example">
{{ message.split('').reverse().join('') }}
</div>

在这个地方,模板不再是简单的声明式逻辑。你必须看一段时间才能意识到,这里是想要显示变量 message 的翻转字符串。当你想要在模板中多次引用此处的翻转字符串时,就会更加难以处理。

所以,对于任何复杂逻辑,你都应当使用计算属性

使用 watch 选项允许我们

  1. 执行异步操作 (访问一个 API),
  2. 限制我们执行该操作的频率,
  3. 并在我们得到最终结果前,设置中间状态。

这些都是计算属性无法做到的。

computed 和 methods

计算属性是基于它们的响应式依赖进行缓存的,只在相关响应式依赖发生改变时它们才会重新求值。这就意味着只要 message 还没有发生改变,多次访问 reversedMessage 计算属性会立即返回之前的计算结果,而不必再次执行函数。

style

比较链接方式和导入方式链接方式(下面用 link 代替)和导入方式(下面用 @import 代替)都是引入外部的 CSS 文件的方式,下面我们来比较这两种方式,并且说明为什么不推荐使用 @import。

  • link 属于 HTML,通过 标签中的 href 属性来引入外部文件,而 @import 属于 CSS,所以导入语句应写在 CSS 中,要注意的是导入语句应写在样式表的开头,否则无法正确导入外部文件;
  • @import 是 CSS2.1 才出现的概念,所以如果浏览器版本较低,无法正确导入外部样式文件;
  • 当 HTML 文件被加载时,link 引用的文件会同时被加载,而 @import 引用的文件则会等页面全部下载完毕再被加载;

header

Document 下面这些标签可用在 head 部分:, , ,
  • Copyrights © 2018-2020 Jee
  • Visitors: | Views:

如果您觉得此文章帮助到了您,请作者喝杯咖啡吧~

支付宝
微信