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的主要内容,如果未能解决你的问题,请参考以下文章

VSCode自定义代码片段9——JS中的面向对象编程

js代码片段: utils/lcoalStorage/cookie

JS代码片段:一个日期离现在多久了

js常用代码片段(更新中)

js常用代码片段

Chrome-Devtools代码片段中的多个JS库