JavaScript(一)基础语法
JavaScript用于网页和用户之间的交互,比如提交的时候,进行用户名是否为空的判断。
完整的 Javascript 由以下三个部分组成:
- 语言基础
- BOM(Browser Object Model 浏览器对象模型)
- DOM(Document Object Model 文档对象模型)
基本语法
标签
JavaScript 必须写在 <script> 里
<html>
<head>
<script>
document.write("这是 javascript");
</script>
</head>
</html>在文档加载结束后使用 document.write,会覆盖整个HTML的内容
也可以在HTML中引用 .js 文件
<html>
<script src="http://jerrysheh.com/study/hello.js"></script>
</html>变量
用 var 或 let 声明变量,关键字var 也可以省略。但省略就是全局变量,所以不建议省略。
在函数中声明 var 变量,变量在整个函数中都可见(即使是声明语句之前),建议使用 let 。
<script>
var x = 10;
document.write("变量x的值:"+x);
</script>基本数据类型
| 关键字 | 简介 |
|---|---|
| undefined | 声明了但未赋值 |
| Boolean | 布尔 |
| Number | 数字 |
| String | 字符串 |
| var | 动态类型 |
| typeof | 变量类型判断 |
| null | 空对象/对象不存在 |
- JavaScript 中单引号和双引号都表示字符串
- JavaScript 中,即使是基本数据类型,也有属性和方法
当不确定某个变量是什么类型的时候,可以用使用typeof来进行判断数据类型
var name = 'jerry'
typeof name // stringJavaScript中的变量类型是动态的
var x // x 为 undefined
var x = 6; // x 为数字
var x = "Bill"; // x 为字符串类型转换
使用内置函数toString()转换为字符串。
比如说,我们可以对 Number 或者 Boolean 执行 toString()方法。
将a转换为16进制字符串
var a = 18
a.toString(16)对于有Null值的情况,用String()会返回null,用toString()报错。
- 使用内置函数
parseInt()、parseFloat()或Number()转换为数字 parseInt会一直定位数字,直到出现非字符。 所以10abc会被转换为10。但是abc10返回NaN,如果没有数字,也返回NaN。Number()必须为纯数字,如果参杂其他字符,直接返回NaN。
使用内置函数Boolean()转换为Boolean值
- 当转换字符串时:非空即为true
- 当转换数字时: 非0即为true
- 当转换对象时:非null即为true
绝对等运算符
JavaScript的运算符跟 Java 区别不大,但是有一点要注意:
==是等于运算符,表示:值相等(类型不一定相等)===是绝对等运算符,表示:类型相等,值也相等
例如,数字1和字符串1,值都是1,但是类型是不一样的
函数和语句
函数
定义了函数,必须调用才能执行。return、作用域等跟 Java 类似。不再赘述。
<script>
function print(message){
document.write(message);
}
print("hello");
print("<br>");
print("world");
</script>输出
hello
world在写前端文件的时候,通常把 JavaScript 脚本写在最后面,以提高网页的加载速度。当需要在加载时立即执行 JavaScript 代码,可以用
onload="jfun()"属性。其中jfun()是 JS 函数名称。
语句
跟Java类似, JavaScript也支持 条件语句、循环语句、try-catch语句
其中循环语句还支持 forEach 循环。 但是跟 Java 的 forEach 有点不一样
var strs = ["America","Greece","Britain","Canada","China","Egypt"];
var count = 0;
for (var str in strs) {
if (strs[str].match("a") != null) {
count++;
}
}这里的str,是strs的下标,因此要表达数组的每个元素,用strs[str]
continue、break 什么的当然也是存在的啦
事件
用户任何对网页的操作,都会产生一个事件。
事件有很多种,比如鼠标移动,鼠标点击,键盘点击等等。
鼠标点击事件
<script>
function showHello(){
alert("Hello JavaScript");
}
</script>
<button onclick="showHello()">点击一下</button>效果如下
对象
对象是有属性和方法的一种特殊数据类型。
常见的对象有数字Number,字符串String,日期Date,数组Array等。
跟 Java 一样,可以通过 new 来创建一个对象
<script>
var x = "5";
var y = new String(x);
</script>常用的数字方法
| 关键字 | 简介 |
|---|---|
| new Number | 创建一个数字对象 |
| 属性MIN_VALUE | 最小值 |
| 属性MAX_VALUE | 最大值 |
| 属性NaN | 表示不是数字 |
| 方法toFixed | 返回一个数字的小数表达 |
| 方法toExponential | 返回一个数字的科学计数法表达 |
| 方法valueOf | 返回一个数字对象的基本数字类型 |
常用的字符串方法
| 关键字 | 简介 |
|---|---|
| new String() | 创建字符串对象 |
| 属性 length | 字符串长度 |
| 方法 charAt charCodeAt | 返回指定位置的字符 |
| 方法 concat | 字符串拼接 |
| 方法 indexOf lastIndexOf | 子字符串出现的位置 |
| 方法 localeCompare | 比较两段字符串是否相同 |
| 方法 substring | 截取一段子字符串 |
| 方法 split | 根据分隔符,把字符串转换为数组 |
| 方法 replace | 替换子字符串 |
常用的数组方法
| 关键字 | 简介 |
|---|---|
| new Array | 创建数组对象 |
| 属性 length | 数组长度 |
| for / for in | 遍历一个数组 |
| 方法 concat | 连接数组 |
| 方法 join | 通过指定分隔符,返回一个数组的字符串表达 |
| 方法 push pop | 分别在最后的位置插入数据和获取数据(获取后删除) |
| 方法 unshift shift | 分别在最开始的位置插入数据和获取数据(获取后删除) |
| 方法 sort | 对数组的内容进行排序 |
| 方法 sort(comparator) | 自定义排序算法 |
| 方法 reverse | 对数组的内容进行反转 |
| 方法 slice | 获取子数组 |
| 方法 splice | 删除和插入元素 |
常用的数学方法
| 关键字 | 简介 |
|---|---|
| 属性E PI | 自然对数和圆周率 |
| 方法 abs | 绝对值 |
| 方法 min max | 最小最大 |
| 方法 pow | 求幂 |
| 方法 round | 四舍五入 |
| 方法 random | 随机数 |
自定义对象
直接定义对象
var person={
firstname : "Bill",
lastname : "Gates",
id : 5566
};
var n = person.lastname;函数封装对象
function Hero(name){
this.name = name;
this.go = function(){
document.write(this.name + "正在前进<br>");
}
}
var gareen = new Hero("盖伦");
gareen.go();
var teemo = new Hero("提莫");
teemo.go();用 prototype 实现为已存在的对象增添新的方法,例如为 Hero 增添 back 方法
Hero.prototype.back = function(){
document.write(this.name + "正在后退<br>");
}
gareen.back();日期格式化函数
getDate:function (strDate) {
var d = new Date(strDate);
return d.getFullYear() + '-' + (d.getMonth() + 1) + '-' + d.getDate() + ' ' + d.getHours() + ':' + d.getMinutes() + ':' + d.getSeconds();
}参考:
