字节青训营前端青训营笔记「3」 | 青训营笔记

79 阅读3分钟

这是我参与「第五届青训营 」伴学笔记创作活动的第 3 天

0 前面的话

今天是过完年后开始上课的第一天,今天的内容没仔细听,就写点JavaScript的知识吧!知识点内容可能比较散,仅记录一下而已。这里的学习参考了部分菜鸟教程内容,如有需要,链接:www.runoob.com/js/js-type-…

1 正文

undefined 和 null 的区别

typeof undefined             // undefined  
typeof null                  // object  
null === undefined           // false  
null == undefined            // true

1、定义

  • (1)undefined:是所有没有赋值变量的默认值,自动赋值。
  • (2)null:主动释放一个变量引用的对象,表示一个变量不再指向任何对象地址。

2、何时使用null?
当使用完一个比较大的对象时,需要对其进行释放内存时,设置为 null。

3、null 与 undefined 的异同点是什么呢?
共同点:都是原始类型,保存在栈中变量本地。
不同点:
(1)undefined——表示变量声明过但并未赋过值。 它是所有未赋值变量默认值,例如:

var a;    // a 自动被赋值为 undefined

(2)null——表示一个变量将来可能指向一个对象。一般用于主动释放指向对象的引用,例如:

var emps = ['ss','nn'];
emps = null;     // 释放指向数组的引用

4、延伸——垃圾回收站
它是专门释放对象内存的一个程序。

  • (1)在底层,后台伴随当前程序同时运行;引擎会定时自动调用垃圾回收期;
  • (2)总有一个对象不再被任何变量引用时,才释放。

constructor 属性

constructor 属性返回所有 JavaScript 变量的构造函数。

"John".constructor                 // 返回函数 String()  { [native code] }  
(3.14).constructor                 // 返回函数 Number()  { [native code] }  
false.constructor                  // 返回函数 Boolean() { [native code] }  
[1,2,3,4].constructor              // 返回函数 Array()   { [native code] }  
{name:'John', age:34}.constructor  // 返回函数 Object()  { [native code] }  
new Date().constructor             // 返回函数 Date()    { [native code] }  
function () {}.constructor         // 返回函数 Function(){ [native code] }

使用 constructor 属性来查看对象是否为数组 (包含字符串 "Array"):

function isArray(myArray) {  
    return myArray.constructor.toString().indexOf("Array") > -1;  
}

自动转换类型

当 JavaScript 尝试操作一个 "错误" 的数据类型时,会自动转换为 "正确" 的数据类型。 以下输出结果不是所期望的:

5 + null    // 返回 5         null 转换为 0  
"5" + null  // 返回"5null"   null 转换为 "null"  
"5" + 1     // 返回 "51"      1 转换为 "1"   
"5" - 1     // 返回 4         "5" 转换为 5

NaN


NaN 是一个特殊的数值,NaN 即非数值(Not a Number),这个数值用于本来要返回数值的操作数未返回数值的情况。
NaN 与任何值都不相等,包括 NaN 本身。
可以通过 isNaN() 方法来判断某个数值是否是NaN这个特殊的数,使用 isNaN() 方法会将传入的数值如果是非数值的会将其自动转换成数值类型,若能转换成数值类型,那么这个函数返回 false,若不能转换成数值类型,则这个数就是 NaN,即返回 true。

JavaScript 正则表达式

在 JavaScript 中,正则表达式通常用于两个字符串方法 : search() 和 replace()。
search() 方法用于检索字符串中指定的子字符串,或检索与正则表达式相匹配的子字符串,并返回子串的起始位置。
replace() 方法用于在字符串中用一些字符串替换另一些字符串,或替换一个与正则表达式匹配的子串。
使用正则表达式搜索 "Runoob" 字符串,且不区分大小写:

var str = "Visit Runoob!"; 
var n = str.search(/Runoob/i);
console.log(n);

输出结果为:6


replace() 方法将接收字符串作为参数:

var str = document.getElementById("demo").innerHTML; 
var txt = str.replace("Microsoft","Runoob");

正则表达式表单验证实例:

/*是否带有小数*/
function    isDecimal(strValue )  {  
   var  objRegExp= /^\d+.\d+$/;
   return  objRegExp.test(strValue);  
}  

/*校验是否中文名称组成 */
function ischina(str) {
    var reg=/^[\u4E00-\u9FA5]{2,4}$/;   /*定义验证表达式*/
    return reg.test(str);     /*进行验证*/
}

/*校验是否全由8位数字组成 */
function isStudentNo(str) {
    var reg=/^[0-9]{8}$/;   /*定义验证表达式*/
    return reg.test(str);     /*进行验证*/
}

/*校验电话码格式 */
function isTelCode(str) {
    var reg= /^((0\d{2,3}-\d{7,8})|(1[3584]\d{9}))$/;
    return reg.test(str);
}

/*校验邮件地址是否合法 */
function IsEmail(str) {
    var reg=/^\w+@[a-zA-Z0-9]{2,10}(?:.[a-z]{2,4}){1,3}$/;
    return reg.test(str);
}