由于学web时只学了后端,现在到了前后端联调的场景发现看不懂前端代码,于是开始恶补
看了下基础内容发现html和css比较好看懂,但JavaScript比较迷,大概知道组件id绑定事件
下面选取看菜鸟教程补充的JS知识
JS是在html搭建好骨架,css设计好样式的基础上添加交互性和其他动态功能。
下面是基本案例,可以看到JS定义函数绑定了html写的一个按钮,让这个按钮可以动态显示日期
基础教程(cainiaojc.com)
第一个javascript示例入门
具体而言,JS可以实现以下功能:
JavaScript可以更改HTML属性
JavaScript可以隐藏和显示HTML元素
JavaScript可以添加和删除HTML元素
JavaScript可以更改元素的样式(CSS)和位置
JavaScript可以修改文本内容
JavaScript可以监视鼠标单击,悬停等事件并对其做出反应
JavaScript可以创建警告弹出窗口,以向用户显示信息或警告消息
JavaScript可以在将用户输入提交到服务器之前对其进行验证
(传统)可以在
写入HTML元素使用 innerHTML
写入文档流使用 document.write()
弹出警告框,使用 window.alert()
可以使用let(对于块级变量),var(对于函数级变量)或const(只读)声明变量。
仅使用var而没赋值时变量具有值undefined,表示尚未为变量分配值,或者根本没有声明变量。
var x;
x = 1;
var y = 1;
变量,函数或属性的名称在JavaScript中称为标识符,JavaScript 标识符必须以字母、下划线(_)或美元符($)开始,后续的字符可以是字母、数字、下划线或美元符。
所有JavaScript标识符均区分大小写,标识符的约定是使用camelCase(驼峰命名)编写的。
和Java的一样,单行注释以双斜杠(//)开头,行注释以斜杠和星号(/*)开头,以星号和斜杠(*/)结束。
好消息,JS变量定义时不用声明类型,因为会动态分配
var length = 4;// Number 数字
var firstName = "Vishal"; // String 字符串
var user = {firstName:"Vishal", age:22}; // Object 对象
var fruits = ["Apple", "Mango", "Banana"];// Array 数组
JS中数字具有64位,不分整数和浮点数,但底层也和其他语言一样
toExponential(),toFixed(),toPrecision()得到对应位数的数
valueOf()得到原始数值(像Java Integer拆包)
Number()转换数字,parseInt(),parseFloat()解析数字
JS中单双引号都可以包字符串
+ 运算符用于拼接字符串,还可以用于长代码换行
直接定义的字符串变量是string,而使用new创建的是字符串对象,属于object。
var city = new String("New Delhi");
length,concat(),toUpperCase(),split(),trim(),replace(),substring(),charAt()和Java一样
此外还有indexOf(),lastIndexOf(),search()用于匹配。
基本都跟其他语言一样,只有几个特殊的
**=:求幂之后再赋值
===:相等且同类型
!==: 不相等且不同类型
三元运算符:
var status = (age >= 18) ? "adult" : "minor";
delete运算符可删除对象,对象的属性或数组中指定索引处的元素
var user = {firstName:"Vishal", age:"22", color:"blue"};
delete user.firstName; // returns true
var fruits = ["Apple", "Mango", "Banana"];
delete fruits[0]; // delete "Apple"
in:看在不在集合里
instanceof:看指定的对象是否属于指定的对象类型
if语句,if...else语句,else...if语句,switch语句,while循环,do while循环,for循环都跟Java完全一样。也用continue和break跳出循环。
for...in循环迭代的对象的属性,以任意的顺序
var myObj = {
name: "VISHAL",
age: 22,
height: 175,
city: "New Delhi",
getNothing: function () {return "";}
};
for (let x in myObj) {
document.write(x);
}
for...of循环迭代数据,该迭代的对象定义要遍历
let iterable = [10, 20, 30, 40, 50];
for (let x of iterable) {
document.write(x);
}
function nameOfFunction(parameter1, parameter2, ..., parameterN) {
// 要执行的代码
return 返回值;
}
//调用函数,返回值将存储在x中
var x = nameOfFunction(parameter1, parameter2, ..., parameterN);
还有个类似匿名函数,用变量名调用
var square = function(number) { return number * number; };
var x = square(5);
像经常看到的JSON,里面还可以定义函数
var user = {
firstName: "Vishal",
lastName : "Choudhary",
age : 22,
location : "New Delhi",
getName : function() {
return this.firstName + " " + this.lastName;
}
};
可以用.和数组索引来访问对象属性
user.firstName;
user["firstName"];
访问对象方法也和Java一样
user.getName();
当使用关键字声明JavaScript变量时new,该变量将作为对象创建:
var a = new Number(); // 将a声明为Number对象
var b = new String(); // 将b声明为String对象
var c = new Boolean(); // 将c声明为Boolean对象
也和Java一致,再添加元素事如果能刚好接上下一个可以为下一个索引分配值,不确定就用push
let fruits = ["Apple", "Mango", "Banana", "Orange"];
fruits[4] = "Guava";
其他的pop(),shift(),concat(),slice(),fill(),sort(),reverse()也可以望文生义
forEach()方法对数组的每个元素执行一次提供的函数,也和Java很像
var fruits = ["Apple", "Mango", "Banana", "Orange"];
var result = document.getElementById("result");
fruits.forEach(function(element, index, array) {
result.innerHTML += index + ": " + element + "
";
});
map()方法返回一个新数组,不会改变原始数组。同时新数组中的元素为原始数组元素调用函数处理后的值,并按照原始数组元素顺序依次处理元素
var nums1 = [1, 5, 20, 14, 55, 16];
var nums2 = nums1.map(twice);
function twice(element, index, array) {
return (element * 2);
}
filter(),find(),every()同理
事件是在浏览器中发生的操作,可由用户或浏览器本身启动
页面加载完成
用户单击一个按钮
用户滚动文档
用户调整浏览器大小
用户移动鼠标
用户提交表单
用户按下键盘上的一个键
HTML输入字段已更改
使用方法为:
内联事件处理程序(html上)
单击此处更改此文本
事件处理程序属性
let para = document.querySelector("#para");
para.onclick = function() {
this.innerHTML = "Hello world";
}
事件监听器
let para = document.querySelector("#para");
para.addEventListener("click", changeText);
function changeText() {
para.innerHTML = "Hello world";
}