文章目录
JavaScript语法基础
1.JavaScript引入方式
1.1 第一种方式
只需要在 head 标签中,或者在 body 标签中, 使用 script 标签 来书写 JavaScript 代码
1.2 第二种方式
使用 script 标签引入 单独的 JavaScript 代码文件
<script type="text/javascript" src="1.js">
</script> <script type="text/javascript">
2.变量
数值类型: number
字符串类型: string
对象类型: object
布尔类型: boolean
函数类型: function
简单数据类型 | 说明 | 默认值 |
---|---|---|
Number | 数字型,包含整型和浮点型 | 0 |
String | 字符串型 | “” |
Boolean | 布尔值型 | false |
Undefined | var a;声明了变量a但是没有赋值,此时a=undefined | undefined |
Null | var a = null;声明了变量a为空值 | null |
- JS 中的定义变量格式:
var 变量名;
var 变量名 = 值;
var a = 12;
var b = "abc";
注意:控制台输入js语句,一条语句可以不输入;
分号,两条以上要输入;
分号区分
- 数字型Number
-Infinity 负无穷
Infinity 正无穷
NaN 代表非数字
isNaN():用来判断一个变量是否为非数字的类型,非数字true,数字型false. - 布尔型Boolean
布尔型和数字型相加的时候,true的值为1,false的值为0
console.log(true+1); // 2
console.log(false+1); //1
- Undefinded
一个变量声明后没有赋值会有默认值undefined
var num;
console.log(num); // undefined
console.log("Hello"+num); // Helloundefined
console.log(1+num);// NaN
console.log(true+num); // NaN
- Null
一个变量声明并赋值为Null,里面存的值为空
var num = null;
console.log(num); // null
console.log("Hello"+num); // Hellonull
console.log(1+num); // 1
console.log(true+num); // 1
3.关系运算符
JavaScript 中的运算符和 Java 用法基本相同.
特殊的有:
==
等于是简单的做字面值的比较
15 == '15'; // true
===
除了做字面值的比较之外,还会比较两个变量的数据类型
15 == '15'; // fasle
4.条件语句
综合练习1:输入一个数字,判断是奇数还是偶数
var a = prompt(“请输入一个数字”);
if(isNaN(a)){
alert("请输入一个数字");
/*因为“hello%2 结果为NaN,所以要先判断输进来的是否是数字”*/
}else{
if(a % 2 == 0){
alert(`${a}`是一个偶数);
}else{
alert(`${a}`是一个奇数);
}
}
综合练习2: 计算 5 的阶乘
var result = 1;
for (var i = 1; i <= 5; i++) {
result *= i;
}
console.log("result = " + result);
5.数组
5.1 创建数组
- 创建数组
- 使用 new 关键字创建
var arr = new Array();
- 使用字面量方式创建 [常用]
var arr = [];
var arr2 = [1, 2, 'haha', false];
注意:JS 的数组不要求元素是相同类型.
- 如果下标超出范围读取元素, 则结果为 undefined
console.log(arr[3]); // undefined
console.log(arr[-1]); // undefined
- 新增数组元素
1.通过修改length新增,相当于在末尾新增元素, 新增的元素默认值为 undefined
<script>
var arr = [9, 5, 2, 7];
arr.length = 6;
console.log(arr);
console.log(arr[4], arr[5]);
</script>
2.通过下标新增:如下图,arr[0],arr[1],依然是undefined
<script>
var arr = [];
arr[2] = 10;
console.log(arr);
</script>
a.push(x);
尾插元素
a.pop();
尾删
a.unshift(x);
头插元素
a.shift();
头删
6.函数
6.1 函数的两种定义方式
- 第一种:可以使用 function 关键字来定义函数
使用的格式如下:
function 函数名(形参列表){
函数体
}
在 JavaScript 语言中,如何定义带有返回值的函数?
答:只需要在函数体内直接使用 return 语句返回值即可!
<script type="text/javascript">
//定义一个无参函数
//函数被调用了,才会执行
function fun(){
console.log("无参函数fun()被调用了");
}
//定义一个无参函数
function fun2(a,b){
console.log("有参函数fun2()被调用了 a->"+a+",b->"+b);
}
//定义一个有返回值的函数
function sum(num1,num2) {
var result = num1 + num2;
return result;
}
console.log(sum(20,30));
</script>
- 第二种
使用格式如下var 函数名 = function(形参列表) { 函数体 }
var f = function(){
console.log("第二种定义方式");
}
6.2 函数的隐形参数arguments
arguments
就是在 function 函数中不需要定义,但却可以直接用来获取所有参数的变量。我们管它叫隐形参数
var add = function() {
var sum = 0;
for (var i = 0; i < arguments.length; i++) {
sum += arguments[i];
}
return sum; }
console.log(add(10, 20)); // 30
console.log(add(1, 2, 3, 4)); // 10
console.log(typeof add); // function
6.3 作用域
- 全局作用域: 在整个 script 标签中, 或者单独的 js 文件中生效.
- 局部作用域/函数作用域: 在函数内部生效.
- 创建变量时如果不写 var, 则得到一个全局变量.
7.对象
7.1 创建对象的3种方式
- 方式一:使用 字面量 创建对象 [常用]
使用{ }
创建对象
var ob ={}; //创建一个空对象
var student = {
name : '大米',
age : 18,
height : 160,
sayHello : function(){
console.log("Hello");
}
}
// 1. 使用 . 成员访问运算符来访问属性 `.` 可以理解成 "的"
console.log(student.age);
// 2. 使用 [ ] 访问属性, 此时属性需要加上引号
console.log(student['name']);
// 3. 调用方法, 别忘记加上 ()
student.sayHello();
- 方式二:使用 new Object 创建对象
var student = new Object(); // 和创建数组类似
student.name='小米',
student.sex = '男',
student['height'] = 190,
student.sayHello = function(){
console.log("hello");
}
- 方式三:使用 构造函数 创建对象
前面的两种创建对象方式只能创建一个对象. 而使用构造函数可以很方便 的创建 多个对象.
基本语法:
function 构造函数名(形参) {
this.属性 = 值;
this.方法 = function...
}
var obj = new 构造函数名(实参);
注意:
- 在构造函数内部使用 this 关键字来表示当前正在构建的对象.
- 构造函数的函数名首字母一般是大写的.
- 构造函数的函数名可以是名词.
- 构造函数不需要 return
- 创建对象的时候必须使用 new 关键字.
function Dog(name,type,sound){
this.name = name;
this.type = type;
this.wang = function(){
console.log(sound);
}
}
var wangcai = new Dog('旺财','中华田园犬','旺旺');
var dahuang = new Dog('大黄','金毛','汪汪');
var haha = new Dog('哈哈','二哈','嗷嗷');
理解这里的new
关键字:
new 的执行过程:
- 先在内存中创建一个空的对象 { }
- this 指向刚才的空对象(将上一步的对象作为 this 的上下文)
- 执行构造函数的代码, 给对象创建属性和方法
- 返回这个对象 (构造函数本身不需要 return, 由 new 代劳了)
WebAPI
在搜索引擎中按照 “MDN + API 关键字” 的方式搜索, 也能快速找到需要的 API 文档.
1. DOM基本概念
重要概念:
- 文档: 一个页面就是一个 文档, 使用 document 表示.
- 元素: 页面中所有的标签都称为 元素. 使用 element 表示.
- 节点: 网页中所有的内容都可以称为 节点(标签节点, 注释节点, 文本节点, 属性节点等). 使用 node 表示.
1.1 获取元素
- querySelector
var element = document.querySelector(selectors);
① selectors 包含一个或多个要匹配的选择器的 DOM字符串 DOMString 。 该字符串必须是有效的CSS选择器字符串;如果不是,则引发SYNTAX_ERR 异常
② 表示文档中与指定的一组CSS选择器匹配的第一个元素的 html元素 Element 对象.
③ 如果您需要与指定选择器匹配的所有元素的列表,则应该使用 querySelectorAll()
④ 可以在任何元素上调用,不仅仅是 document。 调用这个方法的元素将作为本次查找的根元素
<script type="text/javascript">
//1.querySelector
var e1 = document.querySelector('.box');
console.log(e1);
var e2 = document.querySelector('#id');
console.log(e2);
var e3 = document.querySelector('h3 span input');
console.log(e3);
</script>
</head>
<body>
<div class="box">abc</div>
<div id="id">def</div>
<h3><span><input type="text"></span></h3>
</body>
- querySelectorAll
例:选中所有div元素:
<div class="box">abc</div>
<div id="id">def</div>
<script>
var elems = document.querySelectorAll('div');
console.log(elems);
</script>
1.2 事件
- 事件三要素
- 事件源: 哪个元素触发的
- 事件类型: 是点击, 选中, 还是修改?
- 事件处理程序: 进一步如何处理. 往往是一个回调函数.
示例:
<button id="btn">点我一下</button>
<script>
var btn = document.getElementById('btn');
btn.onclick = function () {
alert("hello world");
}
</script>
- 按钮就是事件源.
- 点击就是事件类型
- function 这个匿名函数就是事件处理程序
- 其中 btn.onclick = function() 这个操作称为 注册事件/绑定事件
1.3 操作元素
- 获取/修改元素内容
- innerText
Element.innerText
属性表示一个节点及其后代的“渲染”文本内容 - innerHTML
Element.innerHTML
属性设置或获取HTML语法表示的元素的后代
- 获取/修改元素属性
我们可以在代码中直接通过这些属性来获取属性的值.
<img src="rose.jpg" alt="这是一朵花" title="玫瑰花">
<script>
var img = document.querySelector('img');
img.onclick = function () {
if (img.src.lastIndexOf('rose.jpg') !== -1) {
img.src = './rose2.png';
} else {
img.src = './rose.jpg';
}
}
</script>
- 表单(主要是指 input 标签)的以下属性都可以通过 DOM 来修改
属性 | 含义 |
---|---|
value | input 的值 |
disabled | 禁用 |
checked | 复选框会使用 |
selected | 下拉框会使用 |
type | input 的类型(文本, 密码, 按钮, 文件等) |
持续更新中…