js
Posted 随笔记录园
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了js相关的知识,希望对你有一定的参考价值。
《javascript权威指南》读后笔记
1. ECMAScript 5的保留关键字:class,const,enum,export,extends,import,super ;
2. ECMAScript 3 将Java所有的关键字都列为自己的保留字 ;
3. 分隔符 “ ;” :
- 缺少分隔符,一条语句的结束就成了下一条语句的开始,反之亦然;
- 例外一,再涉及return,break,continue语句,如果这三关键后面紧跟着换行,JS则会在换行处自动填补分号;
- 例外二,“ ++ ” ,“ -- ”自增自减符号,可为前缀,也可为后缀,否则行尾填补分号,将自增或自减符号作为下一行代码前缀操作符并与之一起解析。
1 a 2 ++ 3 b 4 //解析为 a;++b;
4. 类型、值、变量
(1)js数据类型分为:原始类型、对象类型
- 原始类型:数字(整数:-253 ~253 ,浮点数:-5*10-324 ~ 5*10-324)、字符串、布尔值 、特殊原始值(nul:空、undefined:未定义);
- 对象类型:对象、数组、函数;(对象object是属性property的集合,每个属性都由" 名/值对",值可为原始值也可为对象)
(2)
var x=.3 - .2;
var y=.2 - .1;
x == y ; //false
x == .1 ; //false
y == .1 ; //true
//js中 0.3-0.2=0.099 999 999 999 999 98;
(3)日期和时间 var now = new Date();
1 var now=new Date(); 2 now.getFullYear();//年 3 now.getMonth();//月份,从零开始数 4 now.getDate();//几月的第几天,从一开始数 5 now.getDay();//星期几,零代表星期日 6 now.getHours();//当地时间 7 now.getUTHours();//使用UTC表示小时的时间,基于时区
(4)字符串
1 var s="hello,world"; 2 s.charAt(0); //h 得到第几个字符,这里是第零个 3 s.charAt(s.length-1); //d 4 s.substring(1,4); //ell 截取2~4个字符,因索引都是成0开始,所以是从第2个到第4个,但不包括第4个 5 s.slice(1,4); //ell 6 s.slice(-3); //rld 最后三个字符 7 s.indexOf("l"); //2 首次出现的位置 8 s.lastIndexOf("l"); //9 最后一次出现的位置 9 s.indexOf("l",3); //3 在位置3及之后首次出现的位置 10 s.split(","); //["hello","world"] 分割成子串 11 s.replace("h","H"); //Hello,world 全文字符替换 12 s.toUpperCase(); //HELLO,WORLD 将字符转换为大写字母
(5) RegExp()
1 var text="testing:1,2,3"; 2 var pattern=/\d+/g; //匹配所有包含一个或多个数字的实例 3 pattern.test(text); //true test()方法用于检测一个字符串是否匹配某个模式. 4 text.search(pattern); /*8 search()方法用于检索字符串中指定的子字符串, 5 或检索与正则表达式相匹配的子字符串。 6 如果没有找到任何匹配的子串,则返回 -1 。 7 */ 8 text.match(pattern); /* ["1","2","3"] 9 match() 方法可在字符串内检索指定的值, 10 或找到一个或多个正则表达式的匹配。 11 如果没有找到任何匹配的文本, match() 将返回 null。 12 否则,它将返回一个数组,其中存放了与它找到的匹配文本有关的信息。*/ 13 text.replace(pattern,"#"); //testing:#,#,# 14 text.split(/\D+/); //["","1","2","3"]
(6) null 和 undefined
null 常用来表示 “ 空值 ”, 执行 typeof预算,结果返回为object,也就是说,可以将null 认为是一个特殊的对象值,含义是“非对象”,实际上。
undefined 也表示指的空缺,执行 typeof预算,结果返回为undefined,用未定义的值表示更深层次的 “ 空值 ” 。它是变量的的一种取值,表明变量没有初始化。如果要查询对象属性或数组元素的值时返回undefined则说明这个属性或元素不存在;引用没有提供是实参的函数形参的值也是得到undefined。ECMAScript 3中undefined为可读/写,可任意赋值;ECMAScript 5中undefined为只读。
null 和 undefined都表示 “ 值得空缺 ” ,两者通常可互换,两者“==”值为true,两者“===”值为false;null 和 undefined 都不包含任何属性和方法。
也许可以认为undefined是表示系统级别的、出乎意料的或类似错误的的值得空缺,null 是表示程序级的、正常的或意料之中的值得空缺。若需传参最佳选择是null。
(7)全局对象
- 全局属性:比如 undefined、Infinity、NaN;
- 全局函数:比如 isNaN()、parseInt()、eval();
- 构造函数:比如 Date()、RegExp()、String()、Object()、Array();
- 全局对象:比如 Math 和 JSON;
全局对象的初始属性并不是保留字,但他们应该当做保留字来对待。
(8) 包装对象
存取字符串、数字、布尔值的属性时创建的临时对象称作包装对象,它只是偶尔用来区分字符串值和字符串对象、数字和数值对象、布尔值和布尔对象。
(9)对象值的比较均是引用的比较:当且仅当它们引用同一个基对象时,它们才相等。
(10) 类型转换
- toString(radix):radix为可选参数,如果不指定此参数,转换规则将基于十进制。radix的值为2~36.
1 var n=17; 2 str1=n.toString(2); //转换为“10001” 3 str2="0"+n.toString(8); //转换为“021” 4 str3="0x"+n.toString(16); //转换为“0x11”
- toFixed() 根据小数点后的指定位数将数字转换为字符串;(有四舍五入或补充零);
- toExponential()使用指数计数法将数字转换为指数形式的字符串,其中小数点前只有一位,小数点后的位数则由参数决定;(有四舍五入或补充零);
- toPrecision()根据指定的的有效数字位数将数字转换为字符串。(有四舍五入或补充零);
- Number() 将传入的字符串转换为一个证书或浮点数直接量。仅基于十进制数转换。;
- parseInt() 只解析整数;(会跳过任意数量的前导空格);
- parseFloat() 可解析整数和浮点数;(会跳过任意数量的前导空格);
1 var n=123456.789; 2 n.toFixed(0); //123457 3 n.toFixed(2); //123456.79 4 n.toFixed(5); //123456.78900 5 n.toExponential(1); //1.2e+5 6 n.toExponential(3); //1.235e+5 7 n.toPrecision(4); //1.235e+5 8 n.toPrecision(7); //123456.8 9 n.toPrecision(10); //123456.7890
所有对象继承了两个转换方法
- toString()
- valueOf() 简单返回对象本身;如一个日期型,直接返回多少毫秒数。
(11) js中 函数作用域、声明提前
- 函数作用域:指在函数内生命的所有变量在函数体内都是可见的。这意味着变量在声明之前甚至已经可用。这特性被非正式的称为声明提前。
- 在一些类似C语言的编程语言中,花括号内的每一段代码都具有各自的作用域,而且变量在声明它们的代码段之外是不可见的,我们称为块级作用域。JS 没有块级作用域。
(12)使用var声明的变量时,创建的这个属性时不可配置的,故无法通过delete运算符删除。
1 var o1=1; 2 o2=2; 3 this.o3=3; 4 delete o1; //false 变量没有被删除 5 delete o2; //true 变量被删除 6 delete o3; //true 变量被删除
以上是关于js的主要内容,如果未能解决你的问题,请参考以下文章