JavaScript(第一章~第三章)

第一章

1.JavaScript 是一种专为与网页交互而设计的脚本语言,由下列三个不同的部分组成:
(1)ECMAScript,由 ECMA-262 定义,提供核心语言功能;
(2)文档对象模型(DOM),提供访问和操作网页内容的方法和接口;
(3)浏览器对象模型(BOM),提供与浏览器交互的方法和接口。

第二章

1.< script>元素
(1)使用方式:直接和外部文件
(2)内部JavaScript代码从上至下依次解释
(3)< script>元素也按出现顺序进行解析

2.标签的位置(避免延迟)
(1)放到< body>后面中(优)
(2)defer属性(按照先后顺序)
(3)async属性(不按照先后顺序)
3.外部文件的好处
(1)可维护性
(2)可缓存
(3)适应未来
4.< noscript>元素(浏览器不支持脚本或脚本被禁用)

<html> 
<head> 
 <title>Example HTML Page</title> 
 <script type="text/javascript" defer="defer" src="example1.js"></script> 
 <script type="text/javascript" defer="defer" src="example2.js"></script> 
 </head> 
 <body> 
 <noscript> 
 <p>本页面需要浏览器支持(启用)JavaScript。
 </noscript> 
 </body> 
</html>

这个页面会在脚本无效的情况下向用户显示一条消息。而在启用了脚本的浏览器中,用户永远也不
会看到它。

第三章

1.语法:类似C
2.区分大小写
3.标识符(不能把关键词、保留词、true、false和null用作标识符)
(1)第一个字符必须是一个字母、下划线或一个美元符号($);
(2)其他字符可以是字母、下划线、美元符号或者数字;
(3)ECMAScirpt标识符采用驼峰大小写格式(第一个字母小写,剩下的每个单词首字母大写)例如:
firstSecond,myCar
4.注释同C
5.严格模式

"use strict";

6.变量(var是操作符)

var message;

如果无var就是全局变量,但不推荐使用。
7.数据类型(可用typeof操作符检测)
(1)“Undefined”
(2)“Boolean"
(3)“String"
(4)“Number”
(5)“Object"
(6)“Null"
8.typeof操作符,检测数据类型
返回字符串:
“undefined”——如果这个值未定义;
“boolean”——如果这个值是布尔值;
“string”——如果这个值是字符串;
“number”——如果这个值是数值;
“object”——如果这个值是对象或 null;
“function”——如果这个值是函数。
9.null与undefined
没有必要把一个变量的值显示的设置为undefined,但是只要保存的对象的变量还没有真正保存对象,就应该明确的保存null值。
10.Number(基本同C)
(1)整数如果用八进制超出数字范围则自动省去最前的0,为十进制;
(2)浮点数小数点后无任何数字就当整数保存;
(3)浮点数计算会产生误差,因此不要测试某个特定的浮点数值;
(4)浮点数值最高精度是17位小数;
(5)数值范围(Number.MAX_VALUE~Number.MIN_VALUE)
可用isFinite()函数确定是否是无穷,是返回true;
(6)NaN(非数值Not a Number)
(a)表示一个本来要返回的数值的操作数未返回数值的情况;
(b)0除以0返回NaN;
(c)NaN不等于NaN;
(d)可以用isNaN()函数判断
11.数值转换
(1)Number()
如果字符串是除数字、十六进制、空字符串以外的字符,则转换为NaN;
(2)parseInt()
(a) 如果第一个字符不是数字字符或者负号,parseInt()就会返回 NaN。
(b)如果第一个字符是数字字符,parseInt()会继续解析第二个字符,直到解析完所有后续字符或者遇到了一个非数字字符,因此解析不了小数。
(c)也可解析十六进制和八进制,为了避免歧义,转换时要有明确指定基数。
(3)parseFloat()
(a)第一个小数点有效
(b)十六进制式的字符串则始终会被转换成 0,只解析十进制
(c)如果字符串包含的是一个可解析为整数的数(没有小数点,或者小数点后都是零)parseFloat()会返回整数。
12.字符串(转换成字符串用toString()方法)
(1) null和undefined不能用toString()方法;
(2)在括号中输入基数,可以输出对应进制;
(3)要把某个值转换为字符串,可以使用加号操作符把它与一个字符串("")加在一起。
13.位操作符
(1)按位非(~)
操作数的负值减1
(2)按位与(&)
二进制一一对应只有两个都是1,结果是1
(3)按位或(|)
二进制有一个位是 1 的情况下就返回 1,因此可以把每个 1 直接放到结果中,输出结果
(4)按位异或(^)
两个数值对应位上只有一个 1 时才返回 1,因此可以把每个 1 直接放到结果中,输出结果
14.逻辑非(!)
可以将其转换成对应的布尔值(负负得正)

alert(!!false);            // true

15.逻辑与(&&)
如果第一个操作数是对象,则返回第二个操作数;
如果第二个操作数是对象,则只有在第一个操作数的求值结果为 true 的情况下才会返回该
对象;
如果两个操作数都是对象,则返回第二个操作数;
如果有一个操作数是 null,则返回 null;
如果有一个操作数是 NaN,则返回 NaN;
如果有一个操作数是 undefined,则返回 undefined。
16.逻辑或(||)
可以利用逻辑或的这一行为来避免为变量赋 null 或 undefined 值

var myObject = preferredObject || backupObject;

17.乘性操作符(乘法、除法和求模)
在操作数为非数值的情况下会执行自动的类型转换
18.加法
(1)如果有一个操作数是 NaN,则结果是 NaN;
(2)如果是 Infinity 加-Infinity,则结果是 NaN;
(3)如果是+0 加-0,则结果是+0;
(4)如果两个操作数都是字符串,则将第二个操作数与第一个操作数拼接起来;
(5)如果只有一个操作数是字符串,则将另一个操作数转换为字符串,然后再将两个字符串拼接
起来。
19.减法
(1)如果是+0 减+0,则结果是+0;
(2)如果是+0 减-0,则结果是-0;
(3)如果是-0 减-0,则结果是+0;
(4)如果是非数值,则转换为数值。
20.关系操作符
(1)如果两个操作数都是字符串,则比较两个字符串对应的字符编码值;
(2)字符串与数值比较时,字符串转为数值再比较,如果那个字符串不能被转换成一个合理的数值,转换成了NaN,任何操作数与 NaN 进行关系比较,结果都是 false。
21.相等于不相等(== && !=)
(1)如果数据类型不同,会强制转换成一样的;
(2)null 和 undefined 是相等的。
22.全等于不全等( === && !==)
(1)不会强制转换;
(2)null 和 undefined 不相等;
(3)由于相等和不相等操作符存在类型转换问题,而为了保持代码中数据类型的完整性,我们推荐使用全等和不全等操作符。
23.语句
(1)if
(2)do-while
(3)while
(4)for(于 ECMAScript 中不存在块级作用
域,因此在循环内部定义的变量也可以在外部访问到)
(5)for-in

for (var propName in window) { 
 document.write(propName); 
}

如果表示要迭代的对象的变量值为 null 或 undefined,for-in 语句不执行循环体。
(6)label(可以在代码中添加标签)
一般都要与 for 语句等循环语句配合使用,由 break 或 continue 语句引用,跳出指定循环。

 var num = 0;
    outPoint:
    for (var i = 0 ; i < 10 ; i++){
         for (var j = 0 ; j < 10 ; j++){
              if( i == 5 && j == 5 ){
                    break outPoint;
              }
         num++;
         }
    }
    alert(num)


(7)break和continue
(8)with(将代码的作用域设置到一个特定的对象中)
(9)switch
switch 语句中使用任何数据类型(在很多其他语言中只能使用数值),无论是字符串,还是对象都没有问题。每个 case 的值不一定是常量,可以是变量,甚至是表达式。比较时使用全等操作符,不会发生类型转换。
24.函数

function sayHi(name, message) { 
 alert("Hello " + name + "," + message); 
}

return 语句也可以不带有任何返回值。在这种情况下,函数在停止执行后将返回 undefined值。这种用法一般用在需要提前停止函数执行而又不需要返回值的情况下:

function sayHi(name, message) { 
 return; 
 alert("Hello " + name + "," + message); //永远不会调用
}

严格模式对函数有一些限制:
*不能把函数命名为 eval 或 arguments;
*不能把参数命名为 eval 或 arguments;
*不能出现两个命名参数同名的情况。
如果发生以上情况,就会导致语法错误,代码无法执行。
(1)参数
ECMAScript 函数不介意传递进来多少个参数,也不在乎传进来参数是什么数据类型。函数参数是以一个包含零或多个值的数组的形式传递的。在函数体内可以通过 arguments 对象来访问这个参数数组,从而获取传递给函数的每一个参数。

function sayHi() { 
 alert("Hello " + arguments[0] + "," + arguments[1]); 
}
function doAdd() { 
 if(arguments.length == 1) { 
 alert(arguments[0] + 10); 
 } else if (arguments.length == 2) { 
 alert(arguments[0] + arguments[1]); 
 } 
} 
doAdd(10); //20 
doAdd(30, 20); //50

参数也可与arguments对象一起用

function doAdd(num1, num2) { 
 if(arguments.length == 1) { 
 alert(num1 + 10); 
 } else if (arguments.length == 2) { 
 alert(arguments[0] + num2); 
 } 
}

(2)没有重载
如果在 ECMAScript 中定义了两个名字相同的函数,则该名字只属于后定义的函数

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值