因为Java和js有许多相似之处,所以主要选了一些不太一样的列子。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>js</title>
</head>
<body>
<script>
alert("hello");
</script>
</body>
</html>
script里面可以放多种编程语言
但是现在js就是默认选项
js注释 //
js语句后的;可写可不写 建议还是写上
js的几种书写形式
1.内嵌式:把js写搭配script标签中
2.行内式:把js写到了html元素的内部
3.外部式:把js写到一个单独的js.文件中在html里面通过script来引入
最常用的输出方式 console.leg
会把日志输出给控制台
不管常见的是啥变量,此时都是统一使用这个关键字
至于具体是啥类型,取决于初始化的值,是啥类型
也可以不初始化变量
不初始化变量的时候,变量的值是一个特殊值undefined
类型也就是undefined类型
但是你不能创建一个未知初始化变量,同时指定它是一个字符串类型
在变量修改的时候有个小问题
如果本来a是一个数字类型,在符直的时候可以给它赋一个数字类型,也可以符一个字符串类型,也可以赋任意类型这个时候a变量的类型,也就随之发生改变
变量的类型1,可以在运行过程中,随着赋值而发生改变
这种行为,称为动态类型
<script>
{
var a = 10;
}
console.log(a);
不受大括号定义约束,依然可以打出10
number 数字
boolen tuue真 false假
string 字符串类型
undefined只有唯一的值udefined表示未定义的值
null 只有唯一的null 表示空格
NaN这是一个比较常见的操作
如果运算结果,得到的不是数字的值,就会出现NaN
console.log('hello' - 10);
将-换成+ 和Java类似,如果把字符串和数字相加,那么就会得到一个“字符串拼接”
字符串很多类型和java类似
如果字符串本身就包含引号,就可以通过单双引号,只显示双引号,单双没区别,看内容
通过相互搭配,来避免使用转义字符
let s ='my name is "xingyouye"';
console.log(s);
let s2 ='my name is "xingyouye"';
console.log(s2);
let s3 ='my name is "xingyouye"';
console.log(s3);
js中的转义字符,不仅仅是\'\'',其他的转移字符们也是支持的
像\n,\t,\f 这些转移字符,也同样支持
字符串长度 11
let s = 'hello world';
console.log(s.length);
要清楚长度单位 此处单位就是字符 一个汉字的话就一个字符
字符串拼接和Java类似直接用+来拼接
let a = 'hello';
let b = 1111;
console.log(a+b);
let a =true;
console.log(a+1);
Java中的布尔是不能和1进行相加的
js中的true就被当成1来处理
这种设定方式,认为其实并不科学!隐式类转换。
undefined这个类型,就只有undefined这一个取值
let a;
console.log(a);
一个未被初始化的状态量就是undefined
java是一个静态强类型语言
js是一个动态弱类型语言
js中比较相等,有两种
只有比较两个变量的值,而不比较两个变量的类型,如果两个变量能够通过隐式类型转换转换成相同的值也是相等的
现在要比较变量的值,也是比较类型。如果类型不相同,就直接认为不相等。
谈到比较两个对象,有三个维度的比较
1.比较身份(是不是同行一个对象)
2.比较值(对象里存储的 数据是否相同)
3.比较类型(两个对象是否是同一个类型)
Java == 比较身份
equals可以被重写,不重写默认也是比较身份,通过重写来设定成比较值
instanceof比较类型
js == 只是比较值
===同时比较值和类型
let x = null;
if(!x){
X=0;
}
等于
x = x || 0;
c = a||b
如果a的值 为真 (非0)此时c的值就是表达式a的值
如果a的值为假 (为0)此时c的值就是表达式b的值
c = a && b 也是类似的
如果a的值为假 此时c的值就是表达式a的值
如果a的值为真 此时c的值就是表达式b的值
js数组更像Java中创建一个对象
Java里面,int[]整型数组,String[]字符串数组
在js中,就只有一种数组,就叫数组
let arr = [1,2,3,4];
console.log(arr[0]);
console.log(arr[1]);
console.log(arr[2]);
console.log(arr[3]);
Java中要求数组下标,是0->-1范围,如果超出范围,就会输出一个异常
js并非如此,当我们访问一个超出范围的小标时,得到的结果是undefined,并不会出现异常
arr[100]=10;
console.log(arr);
继续丧心病狂
所以js中的数组,就不是一个正经的数组
除了能接数组,还能接map的话(表示键值对)=>这里说,数组一个map,更准确的说,是一个对象
在js里,是可以在运行时,更黑对象新增属性的
上述代码区别还是源于 静态类型和动态类型之间
JavaScript 教程 (w3school.com.cn)