简介:
JS代码就是JavaScript编写的脚本文件的代码。用单独文件保存,扩展名为.JS。它有自己的元素,如:常量、变量、运算符、函数、事件、对象等。
代码段
由script标签包含的代码,称为代码段,如下:
<script>
...
</script>
复制代码
变量
var a = 120; 其中a称为变量名,120称为变量值
变量存储的数据类型有哪些?
- 基本数据类型
- 引用数据类型
基本数据类型:
number: 100,3,56等 无数个
string:"zhangsan",'lisi'等 无数个
boolean:false,true两个
underfined:underfined 一个
null
引用数据类型:object
基本数据类型的存储与赋值
总结:上面的代码可以这样理解,将a对应的内存中的值取出来复制了一份,给了b。此时b就是10。此时a和b这两个内存空间是独立的,对一个内存空间值的改变不会影响另一个内容空间。
引用数据类型的存储与赋值
总结:上面的代码可以这样理解,首先把[1,2]存储在堆区中,在栈区中取一个地址命名为a,把a中在栈区存储的[1,2]的地址,取出来,copy了一份,赋给了b,b也指向了[1,2]。所以对a的操作势必要影响b的结果。对b的操作,也会影响a的结果。
函数
创建函数有以下两种创建方式,函数声明和函数表达式。
<script>
//函数声明
function f(){
var a =10;
console.log(a)
}
//函数表达式
var g =function f(){
var a =10;
console.log(a)
}
</script>
复制代码
1.编写一个两个数相加的一个函数
<script>
function add(x,y){
return x+y;
}
console.log(add(1,2))
</script>
复制代码
2.编写一个两个数相减的一个函数
<script>
function sub(x,y){
return x-y;
}
console.log(sub(4,2))
</script>
复制代码
3.编写一个两个数相加的一个函数
<script>
function ave(x,y){
return (x+y)/2;
}
console.log(ave(6,2))
</script>
复制代码
4.输出两个数的和、差和平均值。
<script>
function f(x,y){
var arr =[];
var a =x+y;
arr[0] =a;
var b =x-y;
arr[1] =b;
var c =(x+y)/2;
arr[2] =c;
return arr;
}
console.log(arr);
</script>
复制代码
js中的预编译
什么是编译?
- 在计算机语言中,计算机语言主要分两类:编译性语言,另一类是解释性语言。首先,计算语言从最开始到现在,主要有如下几个阶段,第一个是机器语言,计算机可以直接识别的语言。第二个阶段汇编语言。此时,汇编语言也会转化成机器语言,再后来发展,出现第三个阶段高级语言。
- JS是解释性语言,在浏览器中它肯定封装了一个解释性,但是在JS直接被解释时,它需要做件事:第一件事就是扫描整个代码段,如果有语法错误,就不会进入到第二阶段,而是报错了。第二件提升,提升变量和提升函数。
分析如下:
例1:当声明了一个变量,但是没有给它赋值,它输出了undefined。
变量提升
- 加var的变量会提升且将其提升到代码段的最前面,不加var的变量不会提升。
注:函数内部加var变量的提升是指提升到了函数体内部的最前面。
函数提升
- 只会提升函数声明,将其提升到代码段的最前面,不会提升函数表达式.
变量提升
(1)普通变量提升
上面的代码,在执行时,首先是把a提升,然后再对a进行赋值,所以输出一个是undefined,一个是110。分析如下:
(2)循环内部中的var变量也会提升
(3)函数中的var变量也会提升
注:函数中的var变量提升是指提升到函数体中的最前面。
(4)遗漏声明
函数提升
(1)函数声明提升
(2)函数表达式不提升
函数表达式说到底其实它是一个变量g,所以变量g要提升到最前面,提升完之后再调用函数,如下:
全局变量和局部变量
- 简单来说,全局变量和局部变量是以函数为界限的,函数外部的叫全局变量,函数内部的叫局部变量。全局变量在整个代码段中都能调用,而局部变量只能在函数中调用。
- 例一
注:加var的变量可做全局变量也可做局部变量,不加var的变量只能做全局变量。
- 例二
注:首先var变量提升,然后打印变量,且遵循就近原则。
- 例三
注:局部变量只能在函数内部使用。
js中常见的错误
- 代码错误(浏览器报错)
- 逻辑错误(浏览器不报错)
(1)语法错误
1.上述四类错误共同点,就是浏览器会提示信息,我们根据提示信息就能找到解决错误的办法。
2.语法错误会让整个代码都不运行,它在编译期间就发现了语法错误。
3.引用错误,类型错误,警署错误它只会在错误的地方出现错误,在错误后面的代码是不执行的,但是在错误前面的代码是执行。