js语法
1. javascript数据类型
JavaScript拥有动态类型。这意味着相同的变量可用作不同的类型:有 字符串,数字, 布尔值, 对象, 数组,Undefined和Null
对象:
var person={ firstname : "John", lastname : "Doe", id : 5566 };
对象属性有两种寻址方式:
name = person.lastname;
name = person["lastname"];
Undefinied: 表示这个变量并没有值(没这个变量) Null: 表示这个变量的值为空
声明变量类型:可使用new关键字来对变量类型进行声明 var carname = new String; var x= new Number; var y= new Boolean; var cars= new Array; var person = new Object;
* JavaScript 变量均为对象。当您声明一个变量时,就创建了一个新的对象
2. JavaScript 对大小写是敏感的。
3. JavaScript 语句向浏览器发出的命令。语句的作用是告诉浏览器该做什么。 JavaScript 是脚本语言。浏览器会在读取代码时,逐行地执行脚本代码
4. javascript使用分号来分隔语句分号 ;
5. javascript在文本字符串中使用反斜杠对代码行进行换行
document.write("你好 世界!");
6. 注释: 单行注释以 // 开头 多行注释以 /* 开始,以 */ 结尾
7. 变量: 使用 var 关键词来声明变量
var carname; // 变量声明之后,该变量是空的(它没有值)既值是 undefined
var carname="Volvo"; // 声明且赋值
可一条语句同时声明多个变量
var lastname="Doe", age=30, job="carpenter"; //效果等同于
var lastname="Doe"
var age=30
var job="carpenter";
局部变量: 函数内部声明的变量(使用 var)是局部变量,只能在函数内部访问它。
全局变量: 不在任何函数内声明的变量是全局变量,网页上的所有脚本和函数都能访问它
生命周期: JavaScript 变量的生命期从它们被声明的时间开始。
局部变量会在函数运行以后被删除。
全局变量会在页面关闭后被删除。
* 若向未声明的变量中赋值:
carname="Volvo";// 将声明一个全局变量 carname,即使它在函数内执行。
8. javascript对象: JavaScript 对象是属性和方法的容器
// 对象方法
var person = { name: 'tom', age: 20, behavior: function () { console.log(this.name) },
behavior2: thisMethod // 另一种形式 };
function thisMethod () {
console.log('name');
}
// 访问对象方法 function testGetObjectMethod () { person.behavior();
person.behavior2();
}
9. javascript作用域: 可理解为可访问变量的集合
在 HTML 中, 全局变量是 window 对象: 所有数据变量都属于 window 对象
window.myName = 'all can get'; // this variable can get everywhere
* 全局变量,或者函数,可以覆盖 window 对象的变量或者函数。 局部变量,包括 window 对象可以覆盖全局变量和函数。
10. javascript常用事件:
HTML 事件是发生在 HTML 元素上的事情。
HTML 事件可以是浏览器行为,也可以是用户行为。
常用事件: onclick, onchange, onmouseover, onmuseout, onkeydown, onload
11. javascript的字符串对象;
* 反斜杠是一个转义字符。 转义字符将特殊字符转换为字符串字符 eg: " \
// 字符串属性 constructor 返回创建字符串属性的函数 length 返回字符串的长度 prototype 允许您向对象添加属性和方法
// 字符串方法
charAt() 返回指定索引位置的字符 charCodeAt() 返回指定索引位置字符的 Unicode 值 concat() 连接两个或多个字符串,返回连接后的字符串 fromCharCode() 将 Unicode 转换为字符串 indexOf() 返回字符串中检索指定字符第一次出现的位置 lastIndexOf() 返回字符串中检索指定字符最后一次出现的位置 localeCompare() 用本地特定的顺序来比较两个字符串 match() 找到一个或多个正则表达式的匹配 replace() 替换与正则表达式匹配的子串 search() 检索与正则表达式相匹配的值 slice() 提取字符串的片断,并在新的字符串中返回被提取的部分 split() 把字符串分割为子字符串数组 substr() 从起始索引号提取字符串中指定数目的字符 substring() 提取字符串中两个指定的索引号之间的字符 toLocaleLowerCase() 根据主机的语言环境把字符串转换为小写,只有几种语言(如土耳其语)具有地方特有的大小写映射 toLocaleUpperCase() 根据主机的语言环境把字符串转换为大写,只有几种语言(如土耳其语)具有地方特有的大小写映射 toLowerCase() 把字符串转换为小写 toString() 返回字符串对象值 toUpperCase() 把字符串转换为大写 trim() 移除字符串首尾空白 valueOf() 返回某个字符串对象的原始值
12. javascript的 运算符, 比较符, 条件语句, switch语句, for循环, while循环, break和continue等可参照其他语言。
13. typeof 运算符
typeof "John" // 返回 string typeof 3.14 // 返回 number typeof false // 返回 boolean typeof [1,2,3,4] // 返回 object typeof {name:'John', age:34} // 返回 object * 在JavaScript中,数组是一种特殊的对象类型。 因此 typeof [1,2,3,4] 返回 object typeof undefined // undefined typeof null // object
NaN 的数据类型是 number
数组(Array)的数据类型是 object
- 日期(Date)的数据类型为 object
- null 的数据类型是 object
- 未定义变量的数据类型为 undefined
14. javascript的类型转换
全局方法 String() 可以将任何类型的数字,字母,变量,表达式转换为字符串 String(x) // 将变量 x 转换为字符串并返回 String(123) // 将数字 123 转换为字符串并返回 String(100 + 23) // 将数字表达式转换为字符串并返回 Number 方法 toString() 也是有同样的效果。 x.toString() (123).toString() (100 + 23).toString() String(false) // 返回 "false" String(true) // 返回 "true" false.toString() // 返回 "false" true.toString() // 返回 "true" String(new Date()) // 返回 Thu Jul 17 2014 15:38:19 GMT+0200 (W. Europe Daylight Time) obj = new Date() obj.toString() 将字符串转换为数字 全局方法 Number() 可以将字符串转换为数字。 Number("3.14") // 返回 3.14 Number(" ") // 返回 0 Number("") // 返回 0 Number("99 88") // 返回 NaN Number.parseInt();Number.parseFloat(); 将布尔值转换为数字 Number(false) // 返回 0 Number(true) // 返回 1 将日期转换为数字 d = new Date(); Number(d) // 返回 1404568027739 d = new Date(); d.getTime() // 返回 1404568027739
15. javascript变量提升。
16. javascript的严格模式: "use strict"; 参照: http://www.runoob.com/js/js-strict.html
17. javascript自带的验证API
1.方法: checkValidity() 和 setCustomValidity()
<input id="id1" type="number" min="100" max="300" required> <button onclick="myFunction()">验证</button> <p id="demo"></p> <script> function myFunction() { var inpObj = document.getElementById("id1"); if (inpObj.checkValidity() == false) { document.getElementById("demo").innerHTML = inpObj.validationMessage; } } </script>
2. 属性: validity = (customError | patternMismatch | rangeOverflow | rangeUnderflow | stepMismatch| tooLong | typeMismatch | valueMissing | valid); validationMessage willValidate
<input id="id1" type="number" max="100"> <button onclick="myFunction()">验证</button> <p id="demo"></p> <script> function myFunction() { var txt = ""; if (document.getElementById("id1").validity.rangeOverflow) { txt = "输入的值太大了"; } document.getElementById("demo").innerHTML = txt; } </script>
18. javascript的viod(0)
<a href="javascript:void(0);">点我没有反应的!死链接</a> <a href="#pos">点我定位到指定位置!</a> <br> ... <br> <p id="pos">尾部定位点</p>
19. javascript的代码规范
-
复杂语句的通用规则:
- 将左花括号放在第一行的结尾。
- 左花括号前添加一空格。
- 将右花括号独立放在一行。
- 不要以分号结束一个复杂的声明。
- 通常运算符 ( = + - * / ) 前后需要添加空格:
-
对象定义的规则:
- 将左花括号与类名放在同一行。
- 冒号与属性值间有个空格。
- 字符串使用双引号,数字不需要。
- 最后一个属性-值对后面不要添加逗号。
- 将右花括号独立放在一行,并以分号作为结束符号。
-
一般很多代码语言的命名规则都是类似的,例如:
- 变量和函数为驼峰法( camelCase)
- 全局变量为大写 (UPPERCASE )
- 常量 (如 PI) 为大写 (UPPERCASE )
变量命名的几种规则: hyp-hens, camelCase, 或 under_scores