针对数组遍历的方法 forEach map filter reduce reduceRight some every
针对对象遍历的方法 for in
1.url地址栏转对象
var url = 'https://www.baidu.com/s?rsv_bp=1&tn=baidu&wd=fewfge'
function queryURLParamer(url) {
let obj = {}
if (url.indexOf('?') < 0) return
var ary = url.split('?')[1].split('&')
for (let i = 0; i < ary.length; i++) {
var item = ary[i]
const key = ary[i].split('=')[0];
const value = ary[i].split('=')[1];
obj[key] = value
}
return obj
}
queryURLParamer(url)
replace回调用法,arguments
var url = 'https://www.baidu.com/s?rsv_bp=1&tn=baidu&wd=fewfge'
function queryURLParamer2(url) {
var obj={}
var reg = /([^?&=]+)=([^?&=]+)/g
url.replace(reg,function () {
console.log(arguments)
obj[arguments[1]] = arguments[2]
})
return obj
}
queryURLParamer2(url)
**
2.变量提升
**
var foo = 1
function bar() {
if(!foo){
var foo=10
}
console.log(foo)
}
bar() //10
函数bar内变量提升,var foo为 undefined,!foo为true
注:函数执行没有返回值==>undefined,严格模式下arguments和形参变量的映射关系被切断了,互不干扰
**
3.逻辑与和逻辑或
**
&&优先权高于||
&&用于符合某个跳条件做什么事
||用于设置默认值
输出:hello hello hello
4.一个页面从输入url到页面加载显示完成, 这个过程都发生了什么
浏览器根据请求的url 交给DNS域名解析 找到真实IP 向服务器发送请求
服务器交给后台返回数据
浏览器对加载到的资源( html css js) 进行语法解析
载入解析到的资源文件 渲染页面 完成
5. 对象和数字进行比较时, 对象先转换为字符串, 然后转换为数字, 再和数字进行比较
// a为多少时使之成立
if (a == 1 && a == 2 && a == 3) {
console.log(‘成功’)
}
var a = {
_default: 0,
toString: function () {
return ++this._default
}
}
6.类型转化
var len1 = ({} + {}).length //30 类型转化toString ({} + {}).toString() “[object Object][object Object]”
var len2 = ([] + []).length //0 类型转化toString ([] + []).toString() “”
var len3 = (function () {}).length // 0 形参个数
7. Function
const test = new Function(‘a’, ‘b’, ‘c’, ‘console.log(a+b+c)’) test(1, 2, 3) //6
const test1 = new Function(‘a,b,c’, ‘console.log(a+b+c)’) test1(1, 2, 3) //6
函数的参数( 或更确切地说, 各参数的名称) 首先出现, 而函数体在最后。 所有参数都写成字符串形式。
这三个意思相同:
new Function(‘a’, ‘b’, ‘return a + b’); // 基础语法
new Function(‘a,b’, ‘return a + b’); // 逗号分隔
new Function(‘a , b’, ‘return a + b’); // 逗号加空格分隔
当使用new Function() 创建函数时, 其[[Environment]] 不是引用当前的词法环境, 而是引用全局环境。
function getFunc() {
let value = "test";
let func = new Function('alert(value)');
return func;
}
getFunc()(); // error: value is not defined
function getFunc() {
let value = "test";
let func = function () {
alert(value);
};
return func;
}
getFunc()(); // "test", 来自getFunc的词法环境