js基础学习之路

JavaScript一种直译式脚本语言,是一种动态类型、弱类型、基于原型的语言,内置支持类型。它的解释器被称为JavaScript引擎,为浏览器的一部分,广泛用于客户端的脚本语言,最早是在HTML(标准通用标记语言下的一个应用)网页上使用,用来给HTML网页增加动态功能
想了解js的官方介绍请点击

js学习首先要看清各个标签,如果一个标签敲错它都有可能呈现不了预期的效果,比如我在敲函数的时候将function敲成了founction,把alert敲成了alter,结果页面没反应,找了半天才知道是这里错了,所以,不能粗心!
js的函数可以写到外面,也就是自己再新建一个.js文本,用来保存js的函数,在html中可以进行调用,举个栗子:
在这里插入图片描述
这就是一个外部JavaScript文件
在这里插入图片描述
这里是对上面的外部JavaScript函数的调用。
第6行的<script>标签是定义属性值,设置属性值为指向外部JavaScript文件的URL字符串。第7行的<script>标签是为了调用外部文件的函数。
scr是表示包含要执行的代码的外部文件。
JavaScript有两个关于解析先后的属性
1.async:可选,表示性该立即下载脚本,但不应该妨碍页面中其他操作,此功能只对外部JavaScript文件有效
2.defer:可选,表示脚本可以延迟到文档完全被解析和显示之后再执行,此功能只对外部JavaScript文件有效``
并且,默认情况下,所有<script>标签都应该放在<head>标签中。
所有<script>标签在不使用async和defer的情况下都会按照他们在HTML中出现的顺序依次被解析,如果子<head>中包含所有的`JavaScript文件,那就意味着必须等到所有JavaScript代码都被下载、解析和执行完之后,才能开始呈现页面的内容,如果页面有很多的JavaScript问件,这将会导致明显延迟,而且延迟期间的窗口将是一片空白。
为了避免延迟问题现代web应用程序一般都会将全部的JavaScript引用放到 《body》标签页面内容后面

<script>标签可以嵌入到一个HTML文件的任何位置

js分编译时解析分隔符问题

js解析器一般按照最长行匹配原则,并在此基础上忽略代码中的分隔符。所谓最长行匹配原则,就是在一行内如果能够正确解析,那么就在一行内进行解析,否则会继续读取下一行代码,直到能够被正确解析位置,举个栗子:
在这里插入图片描述
这种写法就是错误的,因为解析器如果能够正确解析一个语句的话,会自动为其补加一个分号,表示该语句已经结束,而return是一个完整的语句,解析器能够正确解析,所以会将其转换成这种形式
在这里插入图片描述
浏览器打开则是未定义的
在这里插入图片描述
所以很多时候js会自动将换行符也看作是一句话结束的标志,所以要注意换行符的使用

var的使用说明

和java,c,c++一样,js对变量的声明不可以为
在这里插入图片描述
不可以声明在while的判断条件中,但是可以声明在for中
在这里插入图片描述
如果对一个变量不加以声明就直接为变量赋值,那么js会直接将其视为全局变量进行处理。

定义全局变量的方式

1.在任何函数外面直接执行var语句
2.直接添加一个属性到全局对象上,全局对象是所有全局变量的容器,在Web浏览器中,全局对象名为window。
栗子:window.f=‘value’;
3.直接使用未声明的变量,以这种方式定义的全局变量被称为隐式的全局变量。

浮点数的溢出问题解决

二进制的浮点数不能正确处理十进制的小数,因此0.1+0.2!=0.3,而是=0.30000000000000004,这是js中最常报的bug,并且这是遵循二进制浮点数算数标准而导致的结果,这个标准适合很多应用,但它违背了数字基本常识。
解决方法:浮点数中的整数运算时精确的,所以小数表现出来问题可以通过制定精度来避免,,上面的相加可以这样进行处理:
(1+2)/10 =0.3
例如:元可以通过乘以100而全部转换成分,然后就可以准确的将每项相加,求和后的结果可以处以100转换成元

猜你喜欢

转载自blog.csdn.net/qq_41575517/article/details/88831388