JavaScript
JavaScript 是一种脚本,一门编程语言,它可以在网页上实现复杂的功能,网页展现给你的不再是简单的静态信息,而是实时的内容更新,交互式的地图,2D/3D 动画,滚动播放的视频等等。JavaScript是运行在浏览器上的,功能就是控制页面与用户之间进行交互。
JavaScript书写的位置也有三种
1、内联,写到HTML里
<div onclick="console.log('hello')">
这首歌叫时间,唱有梦想的少年,这时一种信念,鼓励着你改变,这是一页诗篇,戏码由你主演,无论暴雨晴天,请你坚持信念。
</div>
点击div的时候就会触发一个点击事件,浏览器获取到这个点击事件,就会执行onclick这里对应的JavaScript代码
2、内部,写到HTML文件里的<script>
标签里
<script>
var div = document.querySelector("div")
div.onclick = function () {
console.log('hello');
}
</script>
3、外部,写在一个单独的文件里,通过HTML中的<script>
标签引入
<script src="test.js"></script>
// 直接这么写的话,页面在加载时就已经运行了这部分代码
console.log("hello");
console.log();
就是打印,相当于Java中的System.out.println()
运行在浏览器上的JS只能通过HTML作为载体,才能运行在浏览器上
但是也不绝对, JS 也可以依赖 nodejs 执行,脱离浏览器
JS其实不仅仅能开发网页,也能开发服务器,或者开发一个桌面程序(依赖nodejs)
JavaScript的基本语法
JAVA与JavaScript的差异大也不大
变量(类型)
使用var关键字表示这是一个变量,这个变量的类型是在初始化(赋值)的时候确定的。
num的类型就是number
s的类型就是string
//创建变量
var num = 10;
//单引号和双引号不进行区分
var s = 'hello';
一个变量的类型并不是固定死的,而是会随着赋值类型的不同而改变
使用var定义变量时,在{ } 之外也可以访问,var也可以省略,省略时,当前变量就是一个全局变量
可以使用let来定义变量,现在浏览器都支持
null 、undefined在JS中时单独的一个变量
我们可以通过typeof来查看和比较变量的类型,在java中则是 instanceof 比较变量的类型
在JS中, == 表示的是比较内容,而在 Java 里是比较身份,在java中比较内容用的是equals/compareTo
let lit = 'lit';
console.log(typeof (lit));
条件语句
与Java中相似 如:
let num = 999;
if (num > 100){
console.log(100);
}else{
console.log(num);
}
但是,也有不同之处,如:
let num = 998;
if (num){
console.log(100);
}else{
console.log(num);
}
所以if中的条件不一定非得是boolean表达式,也可以是其他类型。
循环
while循环
let num = 1;
while (num <= 10){
console.log(num);
num++;
}
for循环
for (let num = 1;num <= 10;num++){
console.log(num);
}
break 和 continue 的用法都与java类似
let of 相当于Java中的for each
let arrs = [1,2,3,4,5,6,7,8,9,0]
for (let arr of arrs){
console.log(arr);
}
数组
Java中要求数组中的元素类型是相同类型,如果想让数组中有不同类型,就用Object
但是在动态语言中,一般都允许一个数组中存储不同类型的数据
创建数组的两种方法:
// 此处可以枚举设置数组中的数据
let arr = [];
//括号里就为数组的长度
let arr2 = new Array(10);
打印数组的长度,也可以用来修改数组的长度,多出来的位置就默认为undefined
console.log(arr.length)
在JS中,数组下标不会越界,当访问的下标>=数组的长度时,则访问结果为undefined,且可以访问负数的下标以及不是数字的下标,类似键值对
数组尾插
arr.push(20)
函数
函数的定义:在定义函数时,无论有无返回值,返回值时什么类型都可以用function 其余与Java类似
在调用函数时,如果实参少于形参,那么其余形参的内容就会补充为undefined
当一个数字与undefined(非数字类型)进行运算时,运算结果就很容易成为NAN(NOT A NUMBER)
function hello(num){
console.log(num)
}
hello(100);
JS语法中的或操作
a=a||0;
b=b||0;
c=c||0;
//若a为真,则返回a的值,a为假就返回0
JS是为数不多的几个 两数相除结果返回小数的 编程语言
补充
动态类型与静态类型(了解)
静态类型:变量的类型在程序 运行过程中 ,不能发生变化,代码一旦编译好之后,每个变量的类型就固定死了,如:Java C C++ Go
动态类型:变量的类型在程序运行过程中,可以发生变化,每次不同的赋值都有可能会改变变量的类型, 如: JavaScript Python Ruby PHP
一个语言是不是动态类型,与这个语言变量的定义方式无关。
如果是开发一个小型程序(2个人左右),动态类型更好,更灵活
如果是多人协作开发程序,静态类型更好
JS里面在进行一些运算的时候,往往会进行一些隐式类型转换
如:boolean类型与int类型相加时,boolean就会转换为int,再与int类型相加
像这种类型能经常转换的语言,称为 弱类型
像Java这种不太支持隐式类型转换的语言,称为 强类型
强类型更好一些,有时候隐式类型转换会让其它程序员增加代码使用成本,有时候会发生一些不可预料的结果,从而增加工作难度。
类型的强弱 和 静态动态类型 时两种不相干的概念