持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第23天
点击查看活动详情
一、ajax 接收到的数据类型有哪些,数据如何处理
接收到的数据类型:String /JSON 字符串/JSON 对象
JSON 对象直接循环使用
JSON 字符串转 JSON 使用
String 直接使用
//字符串转对象
第一种方式:eval();
var data='{"student":[{"name":"张三","age":"11"},{"name":"李四","age":"11"},{"name":"王五","age":"11"}]}’;
eval(’(“
+data+”)’);
第二种方式:
JSON.parse();
var data='{"student":[{"name":"张三","age":"11"},{"name":"李四","age":"11"},{"name":"王五","age":"11"}]}’;
JSON.parse(data);
区别:eval 方法不会去检查给的字符串时候符合 json 的格式同时如果给的字符串中存在 js 代码 eval 也会一并执行比如:
var data='{"student":[{"name":"张三","age":"11"},{"name":"李四","age":"alert(11)"},{"name":"王五","age":"11"}]}’;
此时执行 eval 方法后会先弹出一个提示框输出 11 的字符串;
这时候使用 JSON.parse()就会报错,显示错误信息为当前字符串不符合 json 格式;即 JSON.parse()方法会检查需要转换的字符串是否符合 json 格式.
相比而言 eval 方法是很不安全,特别是当涉及到第三方时我们需要确保传给 eval 的参数是我们可以控制的,不然里面插入比如 window.location~指向一个恶意的连接总的来说,还是推荐使用 JSON.parse 来实现 json 格式字符串的解析
// 对象转字符串
JSON.stringify(json)
二、请解释一下 JavaScript 的同源策略
同源策略是客户端脚本(尤其是 Javascript)的重要的安全度量标准。它最早出自 Netscape Navigator2.0,其目的是防止某个文档或脚本从多个不同源装载。所谓同源指的是:协议,域名,端口相同,同源策略是一种安全协议,指一段脚本只能读取来自同一来源的窗口和文档的属性。
三、阐述一下异步加载 JS
异步加载的方案:
动态插入 script 标签
通过 ajax 去获取 js 代码,然后通过 eval 执行
script 标签上添加 defer 或者 async 属性
创建并插入 iframe,让它异步执行 js