2022-07-11 第四组 周鹏 学习笔记

JS基础认识

一,认识JS

JS 全名 JavaScript

 

编程语言,脚本语言,依赖于某种“容器”来运行

JS的容器就是浏览器

浏览器来解释执行。

 

小知识1 编程语言的分类

1,解释型语言

JS Python

2,编译型语言

C++ C#

3,半解释半编译

JAVA

 

JS是运行在浏览器上的,可以帮助我们去控制页面,增加网页的功能

 

js的分类

 

vue.js react.js jquery.js angular.js

node js前端语言

 

js的解释器

 

不同浏览器的解释器不同

火狐:spidermonkey

Chrom ,node:v8

Safari:JavaScriptcore

edge:

 

JS的使用

 

由于JS是浏览器的解释器去解释,所以无论JS在哪儿写出来,都可以执行

 

但由于JS的使用过于混乱,所以有个不成文的规定,如果在html里写JS,则需写到body里面。外联的JS则不需要

 

JS的页内使用

如果在html里写JS需要用下面的代码,在代码中间写,

<script></script>

和CSS的

<style></style>

有些类似,但CSS只能在 <head></head> 里面使用(内嵌不算),JS则不需要,只是一般规定在 <bady></bady> 里使用

 

JS的外部使用

(一般推荐使用这个,单某些JS只能使用页内方式)

 

 

JS的数据类型

1,数字(number)

整数,正数,小数,负数,只要是数字都可以

 

2,字符串(string)

英文,中文,特殊字符,似乎除了数字都是字符串

 

3,布尔型(boolean)

true(真 ) false(假)

 

4,空(null)

声明了值为空

5,undefined:未定义

未定义,没有值

 

 

二,JS使用代码

 

 

 

 

字面量

 

字面写出的量

(开发中尽量减少使用 字面量 ,因为后期维护麻烦)

<script>
alert(数据);
</script>

这种直接输出的数据 叫 字面量

 

 

变量

 

变量定义方式1 var

<script>
var 变量名 = 数据类型;
alert(变量名);
</script>

字符串类型的数据,得用 '' 或者 ""

注:在alert里面的数据加 "" 或者 '' 会把变量变成字面量

布尔类型和空 都自己去尝试一下。

注undefined类型的的写法为下

<script>
var 变量名;
alert(变量名);
</script>

var后面是没有等号的。

 

若var定义的一个变量先后被赋予两个数据,以后面那个为准如下:

<script>
      var v1=1;
      var v1=2;
      alert(v1);
  </script>

输出的是 2

 

 

 

变量定义方法2 let

 

在ES6(JS的新版本)中,新推出了两个词代替Var,其中一个就是let

 

let不会出现var中最后一种情况,也就是一个变量被定义两个值的情况,若出现,会报错!

 

 

 

 

变量定义方法3 const

 

新版本的另一个代替var的词

 

有let的特点,但const定义的变量会变成一个常量,是不能改的!所以用的较少

例:

<script>
        let v1=1;
        v1=2;
      alert(v1);
  </script>

输出的是 2

但如果把let改成const,会报错。

 

复杂数组

 

数组

一个变量对应多个值

几种数组方式

1,使用数组函数

例:

<script>
        let v1 = Array();
        // 加括号的一般都是函数
      alert(v1);
  </script>

 

2,使用new方式(一般不用)

例:

<script>
        let v1=new Array();        
      alert(v1);
  </script>
3.使用字面量方式

例:

<script>
        let v1=[1,2,3,4];
      alert(v1);
  </script>

 

赋值方式

几种方式的赋值方式都一样,

 

<script>
        let v1=Array();
        v1[0] = 100 ;//给v1赋值为100
        v1[1] = 90;//给V1赋值为90
      alert(v1[0]);//输出第一个v1的值
  </script>
  //[]里面的 0   1 代表顺序

 

函数

 

定义

定义一个函数,用来执行一系列代码。

函数定义以后,不会自动执行,需要手动调用。

 

定义函数和定义变量的方式大概相同。

变量用 let var

函数用 function

例:

<script>
        function 函数名(){
        alert("我是hello函数");
        }
        hello();//调用函数
</script>

注:上面变量中的代码都可以写在函数里。

 

变量范围问题

函数中的变量只能在函数中使用,

其他函数内部不可以再声明同一个函数,但可以无视上面的那个范围方式调用函数,调用方式和正常调用的方式相同

 

例:

<script>
        function hello(){
        let v1 = 10;
        alert(v1)
        }
        hello();
        console.log(v1);//这个v1没有被定义,被定义的v1在函数里,属于局部变量,是没办法在函数用的。
</script>

 

带有返回值的函数

return 返回函数值

 

例:

<script>
        function hello(){
        let v1 = 10;
        let v2 = 20;
        return v1 + v2;
        }
        //这个时候hello的值已经被返回了,也就是v1+v2的值,这时候我们可以做操作了。
        输出方式 (hello());
       
</script>

return 同时还有一个结束函数的作用

 

<script>
        function hello(){
        let v1 = 10;
        let v2 = 20;
        return v1 + v2;
        输出方式("我是函数最后一句话")
        }
        输出方式(hello());
       
</script>

因为return在上面 所以就不会再出现 "我是函数最后一句话" 这个了

 

带有参数的函数

函数的括号里加入几个参数。

然后给参数调用的时候,给参数赋值

1,有参有返回值

例:

<script>
        function hello(a1,a2){
       
       
        return a1 + a2;
        }
        let a12 = hello(200,100);//若不写hello括号里的那两个参数值,则会输出nan。
        //赋值的顺序和最上面的参数顺序是一样的,
     
      输出方式(a12());
</script>

2,有参无返回值

3,无参有返回值

4,无参无返回值

 

 

 

三,JS的一些使用方法

输出方式

 

console.log(变量名)//控制台输出

 

弹窗

alert//警告弹窗

 

confirm//带有确认和取消的弹窗,有返回值,点击确定是true,点击取消返回false

 

prompt//带有文本框的弹窗,点击确认后有返回值,返回值就是文本框输入的内容

 

 

 

运算符和逻辑运算

 

 

算术运算符

+ - * / %(百分号的意思是,取余,取模)

例:


<script>
      输出方式(5*2);
</script>

 

赋值运算符

= += -= *= /= %=

例:

 

<script>
      lat a = 1;
      a = a + 1;
      a += 1;与上面那个是一个效果
      a++;与最上面那个是一个效果,仅限于加1
      ++a;与最上面那个是一个效果,仅限于加1。与上面那个效果一样。
</script>

 

比较运算符

> < >= <= !=(不等于) ==

 

摆烂摆烂,不写了,看完上面这么简单还不会就去死吧!

 

注意,不能写连大,或者连小,连等也不行! 就a>b>c这种

 

逻辑运算符

&&: 并且

 

let c=50
let a=10
let b=5
输出方式(a>b && a<=c)//a大于b并且a<=c,,,必须两边都成立才ok

||: 或,或者

 

let c=50
let a=10
let b=5
输出方式(a>b || a<=c)//a大于b或者a<=c,,,必须两边只有一个成立就ok

!:非 取反

let c=50
let a=10
let b=5
输出方式(!(a>b))// b>=a   成立才ok

 

三元运算符(三目运算符)

语法格式:

条件表达式 ? 表达式1 : 表达式2

(条件表达式必须要得到一个boolean的结果)

意思是:若条件表达式为真,则取表达式1

若条件表达式为假,则取表达式2

求a 和 b 中的最大值
let a = 10;
let b = 20;

let c = a > b ? a : b//若a > b为真,则c = a,若a > b为假,则c = b
输出方式(c)

 

+号的特殊性

加号除了作为算术运算符外,也有连接的作用

当输出为两个数字时,加号为正常运算符,若两个数据不相同,则 + 作连接符

其他不会。但若字符中的数字也就是""里面的数字,浏览器会自动转换成数字。然后进行算术运算。若是其他字符则会报错。

 

let a = 10;
let b = ?;
输出方式(a+b) //会得到 "10?"

 

小工具

typeof 判断数据类型。

let a = 10;
输出方式(typeof a);//会出现a的数据类型,也就是number

isNaN 判断是否为数字

let a = inNaN(10)
输出方式(!a);//一定要加!,不然会是反的

 

逻辑判断

 

1,if……else:

语法:

 

            if(条件表达式){
要执行的代码;
}else if(条件表达式){
要执行的代码;
}else{
要执行的代码;
}

else也是有条件的,虽然不需要写,但else的条件自动为if条件的相反。

比如if(A>B),则else的条件为(A<=B)

 

if……else 是可以嵌套的,可以无限嵌套,但一般不要超过3层。

 

练习:用if……else判断四个数中最大的数

答案(不绝对):

if(((a>b)?a:b)>((c>d)?c:d)){
          alert(((a>b)?a:b));
      }else if{
          alert(((c>d)?c:d));
      }

 

if(a>b&&a>c&&a>d){
          alert(a);
      }else if(b>a&&b>c&&b>d){
          alert(b);
      }else if(c>a&&c>b&&c>d){
          alert(c);
      }else if{
          alert(d);
      }

 

这里小提一下,一般情况下,不要用else结尾,因为else会把上面相反条件再次考虑一遍,很废时间,效率低!

2,Switch..case结构

格式:

 Switch(表达式){

case 选项1:
要执行的代码
case 选项2:
要执行的代码
…………
default://和if……else中的else效果差不多
要执行的代码
}

Switch..case结构中,当表达式的值在case中匹配成功,会执行对应的代码。但停不下来,后面的代码会继续执行。

 

break可以帮助case停下,所以在case结束时加上。

 

 

 

3,if……else 和 Switch..case的区别与联系,怎么选?

1,当需求为区间范围时,Switch..case根本用不了。

2,if……else 基本上啥也能干……………………无语ing,,不过基础编程学习确实 if……else 好用

3,Switch...case 的效率很高

4,当需求为固定值,且值不多,Switch...case 比较好用

5,能用 Switch...case 解决的不要用 if……else

 

2,相似之处

1.几乎所有的 Switch...case 都可以转换成 if……else ;

2,default 相当于 else;

3,case 相当于 if

 

3,区别

1,Switch...case 不需要按顺序,if……else 需要

posted @ 2022-07-11 18:21  牛杂刻师傅  阅读(47)  评论(0)    收藏  举报