1.javascript初印象
从网上了解到资料看来,该语言最初是一种用于修饰网页页面的脚本语言,是由谷歌的一位大佬开发的,用于页面的进一步美观,由V8引擎作为其解释器。
我之所以对该语言进行了解,是因为在我申报课题用QT开发一个应用的时候,老板在旁边说,QT早都过时了,现在都是用nodejs进行开发。
其原本是只能依靠浏览器中的V8引擎去进行解释的,但是由于谷歌对V8引擎源码的公开,有一些开发者们就将原有的V8引擎框架进行打包,并融入了一些其他模块。使其脱离了Chrome,可以独立运行于一些设备中。
2.语法部分
js的语法相较于C++要简单的多,且其编译过程比较简单,主要是靠由C++编写的node运行环境对js的代码进行一个解析。
相较于C++的预编译、编译、汇编、链接,js需要在意的只有预编译。其所有变量在预编译阶段就已经被记录,也就是说只要一个变量(一个number的对象,或者一个函数),只要在该文件中声明了,那么引用了该变量的部分就不会报错,无论二者的先后顺序(最多有一个“该变量未定义“的提示出现)。
2.1类型定义
关于其在定义时候的类型,并没有C++那样如此的繁琐,主要的就是 ”var“ 关键字,如:
var str = "字符串类型";
var str = 3.14;
var num = 1; // 定义一个变量 num 并将其赋值为 1
var a = 2, b = 3, c = 4; // 同时定义 a、b、c 三个变量并分别赋值为 2、3、4
// var a = 2, // 为了让代码看起来更工整,上一行代码也可以写成这样
// b = 3,
// c = 4;
可以发现,一个var关键字,后面跟上你想要赋的值,其他的不用管,node能自动帮助你进行识别,就很神奇(对了,顺带插一嘴,git上面有v8和node的源码的,但是我没能看懂这个功能是怎么实现的,有大牛指点吗?),
还有两个基本对象声明关键字let与const,let就相当与局部变量,const就是常量。然后是引用对象类型,如Object,Array,Function。
2.2输出语句汇总
(1)alert():
该函数会在浏览器中弹出一个提示框,框中会显示()中的内容,值得注意的是其只能输出字符串的内容。该函数是window对象中的一个函数,所以为了避免一些不必要的错误,我们尽量使用window.alert()的形式来进行调用。
(2)confirm():
其与alert()类似,也是window对象下的一个函数,同样是弹出一个提示框,但是会有一个‘取消’的按键,在这里点击‘确定’或‘取消’是会返回一个布尔值的,亦可以根据这个bool值进行下一步输出。
(3)console.log():
该函数的输出信息是打印在控制台的,通常是使用该输出来调试程序,与上述两个函数不同的是,其不能进行简写,必须加上前面的对象。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>JavaScript</title>
</head>
<body>
<script type="text/javascript">
var myArr = ["Chrome","Firefox","Edge","Safari","Opera"];
console.log(myArr);
</script>
</body>
</html>
效果如图。
(4).document.write():
该函数可以向HTML中写入HTML或javascript代码,可以同时接收多个目标:
document.write(exp1,exp2,exp3);
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>JavaScript</title>
</head>
<body>
<script type="text/javascript">
document.write("<p>现在的时间是:</p>",Date());
</script>
</body>
</html>
示例代码如上
(5)innerHTML
与前面介绍的几个函数不同,innerHTML是一个属性而不是函数,通过它可以设置或者获取指定HTML标签中的内容。
<div id = "sgr">javascript 输出</div>
<script type="text/javascript">
var sgr = document.getElementById("sgr");
console.log(sgr.innerHTML);
sgr.innerHTML="<h2>innerHTML</h2>";
sgr.innerHTML="<h2>QT</h2>";
</script>
这里笔者想了一下为什么最后输出的是QT,我想解释器在执行的时候是先进行预编译确定了已有对象,再执行<script>标签中的js代码,最后再对HTML代码进行执行,也就是说js代码与普通html的执行并不是在一个时候。以上为笔者瞎想,欢迎指正。