下面代码输出了什么?
var a={},
b={key:'b'},
c={key:'c'};
a[b]=123;
a[c]=456;
console.log(a[b]);
答案为456,因为键名只能为字符串,传入对象只会被转为字符串[object Object],a[b],a[c]都等价于a[“[object Object]”]。
控制台输出了啥?
var arr = [];
arr['a'] = a;
console.log(arr.length);
arr['2'] = 2;
console.log(arr.length);
arr.length = 0;
console.log(arr);
0, 3, [];
‘a’, ‘2’作为arr的索引值都会被自动转化成整数类型。’a’转为NaN,存不进去,数组长度不变。’2’转为arr,数组长度就变为3,即便前两个值没有被赋值。
function judge(val) {
switch(val) {
case "A":
console.log(1);
break;
case "string":
console.log(2);
break;
case "undefined":
console.log(3);
break;
case undefined:
console.log(4);
break;
default:
console.log(5);
break;
}
}
judge(new String("A"));
5;
new的方式创建出一个object,虽说new String(“A”) == ’A’,但switch语句判定用的是全相等啊,兄dei~
JavaScript中如何检测一个变量是一个String类型?请写出函数实现
function (v) {
return v.constructor === String;
}
请用js去除字符串空格?
//去除所有空格
function removeAllSpaceOfStr (str) {
return str.replace(/\s*/g, "");
}
extend:
//去除两边空格(正则、trim)
str = str.replace(/^\s*|\s*$/g, "");
str = str.trim();
//去除左边空格(正则、trim)
str = str.replace(/^\s*/, "");
str = str.trimLeft();
//去除右边空格(正则、trim)
str = str.replace(/\s*$/g, "");
str = str.trimRight();
如何获取浏览器URL中查询字符串中的参数?
function getParams () {
let str = window.location.href.split('?')[1];
let arr = str.split('&');
let params = {};
for (let i = 0; i < arr.length; i++) {
params[arr[i].split('=')[0]] = arr[i].split('=')[1];
}
return params;
}
怎样使用原生js添加、移除、移动、复制、创建和查找节点?
1)创建新节点
createDocumentFragment() //创建一个DOM片段
createElement() //创建一个具体的元素
createTextNode() //创建一个文本节点
2)添加、移除、替换、插入、复制
appendChild() //添加
removeChild() //移除
replaceChild() //替换
insertBefore() //插入
cloneChild()
3)查找
getElementsByTagName() //通过标签名称
getElementsByName() //通过元素的Name属性的值
getElementById() //通过元素Id,唯一性
对于一个排好序的数组,如果当中有两个数的和为某个给定的数target,返回true,否则false,事件复杂度O(n) 。
function search(arr, target) {
if (!arr.length) return -1;
let head = 0;
let tail = arr.length;
while(head !== tail && head < tail) {
if (arr[head] === target) return head;
if (arr[tail] === target) return tail;
head++;
tail--;
}
return -1;
}
用javascript实现map的数据结构,使得外部只能通过map提供的接口访问数据
//TODO
列出http协议头部信息并简述其作用。
Cache-control详解: https://blog.csdn.net/qq_33301113/article/details/75676276
https://www.cnblogs.com/azhai-biubiubiu/p/6048901.html
用js实现一个单例模式
var Cat = function() {}
Cat.getInstance = function () {
var instance;
return function () {
return instance || new Cat();
}
} ();
从输入URL到浏览器显示页面,问浏览器其中的工作流程。
1. 输入网址。
2. 浏览器查找域名的IP地址。
3. 浏览器给web服务器发送一个HTTP请求
4. 网站服务的永久重定向响应
5. 浏览器跟踪重定向地址 现在,浏览器知道了要访问的正确地址,所以它会发送另一个获取请求。
6. 服务器“处理”请求,服务器接收到获取请求
7. 服务器发回一个HTTP响应
8. 浏览器开始显示HTML
9. 浏览器发送请求,以获取嵌入在HTML中的对象。
参考:https://www.cnblogs.com/xianyulaodi/p/6547807.html
浏览器是如何渲染显示页面的?