首页 > 代码库 > 21000+行原生J S的学习之路(第一篇)
21000+行原生J S的学习之路(第一篇)
学习JS已经有一年多了(小白),看了很多书,也写了不少代码,但是总感觉功力还是不够(哈哈),前段时间偶然接触到原生JS代码,边对此产生了兴趣,学习原生JS对于我们深入了解js有很好的帮助比如函数的参数类型、返回值类型等。下来先介绍一下原生JS的语法结构,来帮助大家更好的学习和阅读原生JS:
declare function eval(x: string): any;
上面这个就是我们常见的eval函数在原生JS中的写法,括号中X为函数的参数,‘:’后面为参数的类型,最外层‘:’后面为调用函数返回值的类型。any表示可以任意类型(float,int,double,Boolean等),具体的由调用时计算得到。
下来开始正式学习:
1.
declare const NaN: number;
declare const Infinity: number;
由上面的代码可以看出NaN,infinity均为number类型,并且它俩均被const限定符修饰,即是不可修改的。
typeof NaN // "number"
typeof Infinity // "number"
2.
declare function parseInt(s: string, radix?: number): number;
parseInt()我们会经常用到,它里面需要传两个参数(一个必需的string类型的S,另一个radix为可选的)它的返回值类型为number,
radix表示要解析的数字的基数。该值通常为2,8,10,16(该值介于 2 ~ 36 之间).即根据需要将传入的S转换成以radi为基数的number。
parseInt("04"); //返回 4 parseInt("31",10); //返回 31 (3*10+1) parseInt("11",2); //返回 3 (1*2+1) parseInt("27",8); //返回 23 (8*2+7) parseInt("2f",16); //返回 47 (16*2+f) parseInt("010"); //返回 10
括号中的算法可以帮助我们快速计算出表达式的值。
3.
declare function parseFloat(string: string): number;
parseFloat()和parseInt()类似,但是他只接受一个string类型参数,同样其返回值的类型为number。
document.write(parseFloat("10")) //10 document.write(parseFloat("10.00")) //10 document.write(parseFloat("10.33")) //10.33 document.write(parseFloat("34 45 66")) //34 document.write(parseFloat(" 60 ")) //60 document.write(parseFloat("40 years")) //40 document.write(parseFloat("He was 40")) //NaN
4.
declare function isNaN(number: number): boolean;
isNaN()方法通常备用来判断传入的参数是不是一个数字,上面的写法中表示传入的参数为number类型,我觉得这里写的不对,如果传入的参数都是number类型了还用判断是不是number吗。
isNaN(123) //false isNaN(-1.23) //false isNaN(5-2) //false isNaN(0) //false isNaN("Hello") //true isNaN("2005/12/12") //true isNaN({}) //true
注意:true表示传入的参数不是number,false相反。
5.
declare function isFinite(number: number): boolean;
isFinite()方法用来判断传入的number是有穷的还是无穷的,若为有穷,返回true,反之返回false。
document.write(isFinite(123)+ "<br />") //true document.write(isFinite(-1.23)+ "<br />") //true document.write(isFinite(5-2)+ "<br />") //true document.write(isFinite(0)+ "<br />") //true document.write(isFinite("Hello")+ "<br />") //false document.write(isFinite("2005/12/12")+ "<br />") //false
6.
declare function decodeURI(encodedURI: string): string; declare function encodeURI(uri: string): string;
encodeURI() 函数可把字符串作为 URI 进行编码。返回值为URIstring 的副本,其中的某些字符将被十六进制的转义序列进行替换。
decodeURI() 函数可对 encodeURI() 函数编码过的 URI 进行解码。返回值为URIstring 的副本,其中的十六进制转义序列将被它们表示的字符替换。
var test1="http://www.w3school.com.cn/My first/" document.write(encodeURI(test1)+ "<br />") // http://www.w3school.com.cn/My%20first/ document.write(decodeURI(test1)) // http://www.w3school.com.cn/My first/
7.
declare function encodeURIComponent(uriComponent: string): string; declare function decodeURIComponent(encodedURIComponent: string): string;
encodeURIComponent() 函数可把字符串作为 URI 组件进行编码。
document.write(encodeURIComponent("http://www.w3school.com.cn")) document.write("<br />") document.write(encodeURIComponent("http://www.w3school.com.cn/p 1/")) document.write("<br />") document.write(encodeURIComponent(",/?:@&=+$#")) /* 输出 http%3A%2F%2Fwww.w3school.com.cn http%3A%2F%2Fwww.w3school.com.cn%2Fp%201%2F %2C%2F%3F%3A%40%26%3D%2B%24%23 */
decodeURIComponent() 函数可对 encodeURIComponent() 函数编码的 URI 进行解码。
var test1="http://www.w3school.com.cn/My first/" document.write(encodeURIComponent(test1)+ "<br />") document.write(decodeURIComponent(test1)) /* 输出 http%3A%2F%2Fwww.w3school.com.cn%2FMy%20first%2F http://www.w3school.com.cn/My first/ */
关于javascript中url编码与解码点击此链接可进行详细的了解
8.
interface PropertyDescriptor { configurable?: boolean; enumerable?: boolean; value?: any; writable?: boolean; get? (): any; set? (v: any): void; }
上述为一个原型接口函数PropertyDescriptor(),其包含四个内置属性configurable,enumberable,value,writeable对应的值类型为Boolean,Boolean,any,Boolean。
还包含两个方法:get,set。其中set方法是没有返回值的。
用法大致如下:
var o = {name:"HD"}; Object.defineProperty(o,"age",{ configurable:true, enumerable:true, set:function(age){ return this.age = age; }, get:function(){ } }); var oDesc_name = Object.getOwnPropertyDescriptor(o,"name");
9.
interface PropertyDescriptorMap { [s: string]: PropertyDescriptor; }
类似于PropertyDescriptor()
欲知后事如何,且听下回分解!
本文出自 “12743560” 博客,谢绝转载!
21000+行原生J S的学习之路(第一篇)