基础知识

针对数组遍历的方法 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的词法环境
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值