JavaScript基础学习(二)

JavaScript 支持不同类型的循环:

for - 循环代码块一定的次数

for/in - 循环遍历对象的属性

while - 当指定的条件为 true 时循环指定的代码块

do/while - 同样当指定的条件为 true 时循环指定的代码块

null 和 undefined 的值相等,但类型不等:

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

1、定义

  •  (1)undefined:没有赋值的变量,自动默认赋值为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)总有一个对象不再被任何变量引用时,才释放。

在 JavaScript 中有 6 种不同的数据类型:

  • string
  • number
  • boolean
  • object
  • function
  • symbol

3 种对象类型:

  • Object
  • Date
  • Array

2 个不包含任何值的数据类型:

  • null
  • undefined

不同的数值转换为数字(Number), 字符串(String), 布尔值(Boolean):

原始值转换为数字转换为字符串转换为布尔值
false 0 "false" false
true 1 "true" true
0 0 "0" false
1 1 "1" true
"0" 0 "0" true
"000" 0 "000" true
"1" 1 "1" true
NaN NaN "NaN" false
Infinity Infinity "Infinity" true
-Infinity -Infinity "-Infinity" true
"" 0 "" false
"20" 20 "20" true
"Runoob" NaN "Runoob" true
[ ] 0 "" true
[20] 20 "20" true
[10,20] NaN "10,20" true
["Runoob"] NaN "Runoob" true
["Runoob","Google"] NaN "Runoob,Google" true
function(){} NaN "function(){}" true
{ } NaN "[object Object]" true
null 0 "null" false
undefined NaN "undefined" false

正则表达式修饰符

i         执行对大小写不敏感的匹配;

g        执行全局匹配(查找所有匹配而非在找到第一个匹配后停止)。

m      执行多行匹配。

方括号用于查找某个范围内的字符:

[abc]      查找方括号之间的任何字符
[0-9]      查找任何从0至9的数字
(x|y)      查找任何以 | 分隔得选项
 

加法与连接

加法是两个数字相加。

连接是两个字符串连接。

JavaScript 的加法和连接都使用 + 运算符。

x = 10+4;     //结果为14

x=10+  "4" ;  //结果为104 

使用变量相加结果也不一致:

var x = 13;     var y = 7;
var z = x + y;           // z 的结果为 20

var x = 15;     var y = "5";
var z = x + y;           // z 的结果为 "155"
 

HTML 约束验证

HTML5 新增了 HTML 表单的验证方式:约束验证(constraint validation)。

约束验证是表单被提交时浏览器用来实现验证的一种算法。

HTML 约束验证基于:

  • HTML 输入属性
  • CSS 伪类选择器
  • DOM 属性和方法

约束验证 HTML 输入属性

属性          描述

disabled       规定输入的元素不可用

max             规定输入元素的最大值

min              规定输入元素的最小值

pattern        规定输入的元素值的模式

required      规定输入元素字段是必须的

type            规定输入元素的类型

约束验证 CSS 伪类选择器

选择器       描述

:disabled    选取属性为"disabled"属性的 input元素

:invalid      选取无效的 input元素

:optional   选择没有"required"属性的 input元素

:required   选择有" required"属性的 input元素

:valid          选取有效值的 input元素

表单提交

onsubmit="return validateForm()"这样写 ,为什么不是 onsubmit="validateForm()" 

onsubmit="validateForm()" 能够调用 validateForm() 对表单进行验证,但是在验证不通过的情况下,并不能阻止表单提交。

onsubmit="return validateForm()" 当验证不通过时,返回 false,可以阻止表单提交。

为何?

原来 onsubmit 属性就像是 <form> 这个 html 对象的一个方法名,其值(一字符串)就是其方法体,默认返回 true;

onsubmit="return validateForm()"

相当于:

Form.prototype.onsubmit = function() {
    return validateForm()
};

这样复写了 onsubmit 的默认方法(默认返回 true),根据 validateForm() 的结果返回 true 或 false,当验证不通过时,返回 false,onsubmit="return false;" 阻止表单提交。

原文地址:https://www.cnblogs.com/wdyjt/p/14130213.html