JavaScript 学习记录(二)
字符串
1.可以通过内置属性 length 来获取长度。
2.字符串可以通过字符创建(如:var firstName = "John"),也可以通过对象来创建(如: var firstName = new String("John"))。(不过尽量不要创建 String 对象,因为会拖慢速度,或产生其他副作用(先不管他好了))
3. === 为绝对相等(值相等,对象类型也得相等),如上述 2. 中的两种创建方式 == 返回true,而 === 返回false。
4.关于字符串的一些操作
|
5. + 可以直接连接两字符串,而若是字符串+数字,则会将数字当成字符串来处理。
循环
1. 普通的和 C++ 类似,有 for / while,不过,还可以提供 for/in 对对象的属性进行遍历
var person={fname:"John",lname:"Doe",age:25};
for (x in person) // x 为属性名
{
txt=txt + person[x];
}
2. JavaScript 标签简单示例:
label: statements |
规则:
continue 语句(带有或不带标签引用)只能用在循环中。 break 语句(不带标签引用),只能用在循环或 switch 中。 通过标签引用,break 语句可用于跳出任何 JavaScript 代码块。 |
所以,有了标签,就可以在内层循环控制外层循环。
实例:
outerloop:
for (var i = 0; i < 10; i++)
{
innerloop:
for (var j = 0; j < 10; j++)
{
if (j > 3)
{
break;
}
if (i == 2)
{
break innerloop;
}
if (i == 4)
{
break outerloop;
}
document.write("i=" + i + " j=" + j + "");
}
}
类型
1. typeof 可以返回类型,如果是null,则返回对象(也就是说,清空对象可以用 null(其实undefined也可以,用 typeof 会在变量没有值的时候返回,任何变量都可以通过这个来清空,null 与 undefined 值相等,类型不同))。
2. 在 JavaScript 中有 5 种不同的数据类型:
- string
- number
- boolean
- object
- function
3 种对象类型:
- Object
- Date
- Array
2 个不包含任何值的数据类型:
- null
- undefined
3. constructor 属性会返回构造函数
"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] } |
实例 1:查看对象是不是数组:
function isArray(myArray) {
return myArray.constructor.toString().indexOf("Array") > -1;
}
实例 2:查看对象是不是日期:
function isDate(myDate) {
return myDate.constructor.toString().indexOf("Date") > -1;
}
(补充:indexOf是返回字符串在其中的索引,所以其实是利用构造函数同名的特点)
4. 类型转换
全局方法 String() 可以将数字、日期、布尔值转换为字符串。
Number 方法 toString() 也是有同样的效果(转换为字符串)。
其实 Number 还有别的方法,了解一下
方法 | 描述 |
---|---|
toExponential() | 把对象的值转换为指数计数法。 |
toFixed() | 把数字转换为字符串,结果的小数点后有指定位数的数字。 |
toPrecision() | 把数字格式化为指定的长度。 |
Date 方法 toString() 也有相同的效果(转换为字符串)。
其实 Date 还有别的方法,再了解一下
方法 | 描述 |
---|---|
getDate() | 从 Date 对象返回一个月中的某一天 (1 ~ 31)。 |
getDay() | 从 Date 对象返回一周中的某一天 (0 ~ 6)。 |
getFullYear() | 从 Date 对象以四位数字返回年份。 |
getHours() | 返回 Date 对象的小时 (0 ~ 23)。 |
getMilliseconds() | 返回 Date 对象的毫秒(0 ~ 999)。 |
getMinutes() | 返回 Date 对象的分钟 (0 ~ 59)。 |
getMonth() | 从 Date 对象返回月份 (0 ~ 11)。 |
getSeconds() | 返回 Date 对象的秒数 (0 ~ 59)。 |
getTime() | 返回 1970 年 1 月 1 日至今的毫秒数。 |
全局方法 Number() 可以将字符串转换为数字。
Number("3.14") // 返回 3.14 Number(" ") // 返回 0 Number("") // 返回 0 Number("99 88") // 返回 NaN |
更多方法,盯...
方法 | 描述 |
---|---|
parseFloat() | 解析一个字符串,并返回一个浮点数。 |
parseInt() | 解析一个字符串,并返回一个整数。 |
+ 号也可以转换!
var y = "5"; // y 是一个字符串 var x = + y; // x 是一个数字 |
关于自动转换想象与现实的落差
5 + null // 返回 5 null 转换为 0 "5" + null // 返回"5null" null 转换为 "null" "5" + 1 // 返回 "51" 1 转换为 "1" "5" - 1 // 返回 4 "5" 转换为 5 |
document.getElementById("demo").innerHTML = myVar; myVar = {name:"Fjohn"} // toString 转换为 "[object Object]" myVar = [1,2,3,4] // toString 转换为 "1,2,3,4" myVar = new Date() // toString 转换为 "Fri Jul 18 2014 09:08:55 GMT+0200" |
正则表达式
0. 何为正则表达式?
正则表达式是由一个字符序列形成的搜索模式。
当你在文本中搜索数据时,你可以用搜索模式来描述你要查询的内容。
正则表达式可以是一个简单的字符,或一个更复杂的模式。
正则表达式可用于所有文本搜索和文本替换的操作。
1.两个方法
在 JavaScript 中,正则表达式通常用于两个字符串方法 : search() 和 replace()。
search() 方法 用于检索字符串中指定的子字符串,或检索与正则表达式相匹配的子字符串,并返回子串的起始位置。
replace() 方法 用于在字符串中用一些字符替换另一些字符,或替换一个与正则表达式匹配的子串。
2.示例
var patt = /javascript/i 其中 /javascript/i 是一个正则表达式,javascript是主体(查找/替换的东西),/i 是修饰符,代表搜索不区分大小写 |
关于修饰符一点点补充
修饰符 | 描述 |
---|---|
i | 执行对大小写不敏感的匹配。 |
g | 执行全局匹配(查找所有匹配而非在找到第一个匹配后停止)。 |
m | 执行多行匹配。 |
3.实例
<p id="demo"></p>
<script>
function myFunction() {
var str = "learning JavaScript!";
var n = str.search(/javascript/i);
document.getElementById("demo").innerHTML = n;
}
</script>
4.模式
方括号用于查找范围内某个字符
表达式 | 描述 |
---|---|
[abc] | 查找方括号之间的任何字符。 |
[0-9] | 查找任何从 0 至 9 的数字。 |
(x|y) | 查找任何以 | 分隔的选项。 |
元字符是拥有特殊含义的字符
元字符 | 描述 |
---|---|
\d | 查找数字。 |
\s | 查找空白字符。 |
\b | 匹配单词边界。 |
\uxxxx | 查找以十六进制数 xxxx 规定的 Unicode 字符。 |
量词
量词 | 描述 |
---|---|
n+ | 匹配任何包含至少一个 n 的字符串。 |
n* | 匹配任何包含零个或多个 n 的字符串。 |
n? | 匹配任何包含零个或一个 n 的字符串。 |
5.关于 RegExp 对象(这个暂时没有弄懂)
在 JavaScript 中,RegExp 对象是一个预定义了属性和方法的正则表达式对象。
6.闲话
test() 方法是一个正则表达式方法。
test() 方法用于检测一个字符串是否匹配某个模式,如果字符串中含有匹配的文本,则返回 true,否则返回 false。
exec() 方法是一个正则表达式方法。
exec() 方法用于检索字符串中的正则表达式的匹配。
该函数返回一个数组,其中存放匹配的结果。如果未找到匹配,则返回值为 null。