javaScript康复训练-2022年1月12日

前言

今天大概了解了一些常识,草草总结一下吧,然后进入正轨学习啦!

URI

URI完整名为统一资源标识符(Uniform Resource Identifier),网址就是一种uri,而javaScript有几个方法专门来解析URI:encodeURI,encodeURIComponent,decodeURI,decodeURIComponent,其实就是一种编码形式,因为URI可能出现一些字符如中文,日文之类的,而浏览器解析肯定是要把编码统一管理才方便啊。encode开头就是编码,decode开头就是解码。
encodeURI常用于对整个URI进行编码,因为它并不会对URI本身的特殊字符编码如:’/’,而encodeURIComponent是对URI某一段进行编码,因为它会对所有除数字,字母的字符进行编码,至于两个decode方法则与之对应,不过多阐述

encodeURI("www.hao123.com/?name=敏感肌能用吗");
encodeURIComponent("www.hao123.com/?name=敏感肌能用吗");
decodeURI(encodeURI("www.hao123.com/?name=敏感肌能用吗"));

eval

eval很像java中的反射,他就像一个ECMA解析器,可以解析参数里面的字符串命令然后执行,大大增加了JavaScript动态性。

eval("alert('敏感肌能用吗')");

在非严格模式下,eval内部也可以定义变量,函数也是一个变量,所以也可以定义函数。在严格模式下,eval定义的变量,外部无法访问而报错。

eval("function show(msg){alert(msg);}");
eval("var x=114514;");
show(x);

包装类

以前介绍过利用new Object创建一个对象,可以直接加属性。问题来了,一个基础类型能直接加属性吗?

var x=new Object();
x.name="lxy";
console.log(x.name);

我们发现输出结果是undefined。这又是怎么一回事呢?快来随小编一起看看吧

var x=114514;
x.name="lxy";
console.log(x.name);

javaScript有三个特殊的包装类:String,Number,Boolean,当我们使用基础类的时候,会在后台自动实例化包装类,然后利用包装类间接操作,最后销毁包装类。

var x=114514;
x.name="lxy";
// 等效于下代码
var y=new Number(114514);
y.name="lxy";
y=null;

虽然提供给了我们包装类,但是并不建议大家直接实例化包装类使用,大家知道这个概念就好,因为包装类是属于Object对象,所以用typeof返回的是object,这也就很容易出一些莫名其妙的bug,难以一眼发现

var x=new Boolean(false);
// 结果是true
console.log(x&&true);
// 结果是false
console.log(false&&true);
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值