文章目录
JS介绍
JavaScript,简称JS.
JS是世界上最流行的编程语言之一,并且是一门脚本语言,通过解释器运行,一般在客户端(浏览器上)运行,现在也可以基于node.js在服务器端运行。在Chrome内置的JS引擎叫做V8worker.(这个是当前最流行的一个JS引擎)
JavaScript功能
- 网页开发(更复杂的特效和用户交互)
- 网页游戏开发
- 服务器开发(node.js)
- 桌面程序开发(像Electron,VSCode…)
- 手机app开发
关于Java和JavaScript的关系:
JS、HTML、CSS三者关系:
HTML构建出基本架构,CSS进行页面美化,JS构建页面行为。
JavaScript运行
类比Java,在Java中,主要是依靠JVM,我们写下的Java源程序被编译成.class文件(二进制字节码)加载到内存中,然后解释执行,将字节码转成CPU命令。
JS的运行依赖网络,我们写下HTML代码,浏览器加载HTML,然后html通过一些方式引入js(大概率是网络下载),然后浏览器调用v8引擎来将JS代码翻译成二进制机器指令执行。
JavaScript组成
- ECMAScript(简称ES),JS的语法
- DOM:页面文档对象模型,对页面中的元素进行操作。
- BOM:浏览器对象模型,对浏览器窗口进行操作。
ES可以对标Java中的SE部分,是对基础语法的一些介绍
DOM:页面文档对象,本质上就是浏览器提供了一组api让js能够操作网页中的元素。
BOM:本质上是浏览器提供了一组API让JS能操作浏览器窗口
DOM和BOM可以对标Java中的一些库和框架,类似于Spring这种的存在~
JS基础语法
JS书写形式
1.行内式
直接将JS嵌入到html元素内部
<inputtype="button"value="我是一个按钮"onclick="alert('hello')">
JS中的字符串可以单引号表示,也可以使用双引号表示,(JS不区分字符串和字符)
可以自由搭配使用。
html的有些属性,是可以嵌入一段JS的代码的。例如上面的onclick属性,功能是捕获“点击事件”。用户点击这个元素,就会触发点击事件,通过onclick就能够捕获这个点击事件,进一步就触发了对应的JS代码。、
2.外部式
把js代码写到一个单独的文件中,由html来引入。
如下
<scriptsrc="TestDemo2.html"></script>
这个操作会一般情况下触发一个网络请求,浏览器会根据当前src对应的路径来从服务器获取TestDemo2.js这个文件(当前这个是在本地的,没有触发网络i请求)
当加载好这个js后,就会立即执行。
script标签带有了src属性后,script内部就不能再写其他的js代码了,写了也不会生效。
如果一个页面中包含了 多个script标签,就会按照script 出现的先后顺序决定执行顺序~
3.内嵌式
JS可以通过script标签嵌入到html中。
<script><!--alert的功能是弹出一组对话框-->alert("hello world");</script>
输入输出
输入prompt
弹出一个输入框
prompt(“请输入您的姓名”);
输出alert
弹出一个警示对话框。
alert(“hello”);
输出console.log
打印日志
<script>
console.log("hello world");</script>
在控制台中可以看到输出的信息
什么是日志?
日志是程序员调试程序的重要手段。
举个例子,去医院看病时医生让我们做各种检查,血常规,CT,…这些检查的结果就是“日志”。医生可以通过这些信息来诊断病情。
程序员可以通过程序日志来直到程序 的问题/信息。
console
console 是一个js对象, .(点)表示取对象中的某个属性或者 某个方法。可以直观理解成“的”。 console.log 意思是使用“控制台”对象的 log 方法.(ps: 个人感觉和java对象调用方法差别不大…)
语法概览
大多数的编程语言其实可以分成两个大类,一个是 类C ,和C相似,即C++ ,Java,JS… 第二大类就是 类lisp ,和lisp相似,函数式编程。
JS语法有很多和Java相似,但也有不同。
变量的创建
在Java中,创建一个变量需要指明变量类型,是整型,短整型,还是浮点型,字符型等,但在JS中,创建变量不需要显示的指定类型,变量的实际类型,会根据初始化/赋值来确定~
例如
var=10;
var 是JS中的一个关键字,就表示num是一个变量。
如上下图,将变量赋值成 数字,就是数字类型(number),将变量赋值成 字符串,就是字符串类型(String)
除了 var关键字之外,还有一个let关键字与其功能类似,甚至更强大。(var是在九几年出现的,而let是在201x年 ES6引入的相对新的机制),且var本身有一些缺陷,建议统一使用let,且let变量的作用域,生命周期等都和Java类似。至于var关键字的缺陷,这里不多介绍,有兴趣的可以自己 查询。
动态类型
JS是一门动态类型 的语言,动态类型 即指的是 变量 的类型 在运行时是可以改变的。
Java是一个静态类型的语言,一个变量的 类型,在编译阶段就固定了,在运行时,不能改变。如int num=10; num固定就是 int 类型 ,代码指定过程中 不管把 num 如何修改 ,始终都是int 类型。
变量的类型和赋的值息息相关.如下图
<script>let num=20;
console.log(typeof num);
num='hello';
console.log(typeof num);</script>
JS 的动态类型,为JS代码本身引入了很多的灵活性。例如 函数的参数类型也是动态的。传参的时候不需要考虑参数的类型,返回的 时候也不需要考虑返回的类型(即一个函数可以返回不同 的类型),但动态类型也有缺点,即不利于多人团队开发,函数互相调用之间容易发生混乱。
基本数据类型
JS中内置的几种类型:
- number:数字.不区分整数和小数。
- boolean:true是真,false 是假
- string:字符串类型
- underfined:只有唯一的值,underfined。表示未定义的值。
- null:只有唯一的值 null.表示空值
1.number数字类型
JS中不区分整数和浮点数,统一都使用“数字类型”来表示。
JS中的数字进制:
计算机中都使用二进制来表示数据,而我们在平常生活中都是使用十进制。而在JS中,二进制01数字太多,使用起来不方便。所以在表示二进制数字时,往往使用八进制和十六进制来表示二进制数字。
常用进制:
var a=07; //八进制整数,以0开头
var b=0xa; //十六进制整数 ,以0x开头
var c=0b10;//二进制整数,以0b开头
特殊数字值
- Infinity:无穷大,大于任何数字,表示数字已经超过了JS能表示的范围。
- -Infinity:负无穷大,小于任何数字,表示数字已经超过了JS能表示的范围。
- NaN:表示当前的结果不是一个数字。(not a number)
演示:
字符串减去数字 就不是数字。会返回NaN.
<script>
console.log("sg"-10);</script>
2.string字符串类型
<script>let s='hello';var str='world';</script>
转义符
将一些会发生歧义的字符进行转义,方便使用。
求字符串长度
通过使用String的length属性即可。
<script>var a='hehe';
console.log(a.length);var b='哈哈';
console.log(b.length);</script>
效果如下,字符串长度分别为4,2.
3…boolean布尔类型
true 真 false 假,不多赘述。
这里主要提一下和Java中布尔类型的区别。
Java是一个强类型语言,不太支持隐式类型转换,Java中的布尔 仅仅是 布尔,即仅能表示真假,不能做别的事情,而JS是一个弱类型语言,能支持一些隐式类型转换,JS中的布尔,也被当作 1 和 0.
如下:
<script>let a=true;
console.log(a+1);//这里的a会被当作数字1</script>
输出:
4.undefined未定义数据类型
输出一个没有初始化的变量,结果就是undefined,即undefined类型。
<script>let a;
console.log(a);</script>
undefined 和字符串进行相加,结果进行字符串拼接
<script>let a;
console.log(a+"10");//undefined10</script>
undefined 和数字进行相加 ,结果为NaN.
<script>let a;
console.log(a+10);//NaN</script>
5.null空值类型
null 表示当前变量是“空”。
<script>let a;
console.log(a+10);//NaN</script>
注意:null和undefined都是表示一个非法的状态,
null 是空值,用户可以手动设定,而undefined特指没有初始化。undefined和null 都是一种内置类型,而其值分别只有一个,即undefined和null。一般情况下,编程语言里面存在一个概念能够表示“非法状态”就可以了,所以除了JS,大部分语言都有null,但是没有undefined。
运算符
JS中的运算符和Java中的用法相同,这里就不再过多赘述。特别注意一点:
- == :比较相等(会进行隐式类型转换)
- === :比较相等(不会进行隐式类型转换)
Java中不存在’===’,而JS中存在。
版权归原作者 白菜田田 所有, 如有侵权,请联系我们删除。