JavaScript学习笔记(一)---js基本介绍、js的编写运行、函数

1.JS基本介绍

  • 简介:JavaScript一种在浏览器中解释运行的脚本语言(脚本语言:不需要编译,运行过程中由js解释器逐行来进行解释并执行),它的解释器被称为JavaScript引擎,为浏览器的一部分,是广泛用于客户端的脚本语言,最早是在HTML网页上使用,用来给HTML(HTML5)网页增加动态功能。在1995年时,由Netscape公司的Brendan Eich,在网景导航者浏览器上首次设计实现而成。因为Netscape与Sun合作,Netscape管理层希望它外观看起来像Java,因此取名为JavaScript。

  • 可以实现:表单动态校验(密码强度检测)、网页特效、服务端开发、桌面程序、App、控制硬件-物联网、游戏开发……

  • H5与JS的关系:

    H5狭义上,指HTML的第五个版本;广义上指web前端的所有技术,由于web前端是在H5出现后开始火爆起来,所以,习惯上把web前端也叫H5。web前端开发也叫H5开发。

    H5包括 HTML,CSS,JavaScript,等一切前端技术。

  • HTML/CSS标记语言----描述类语言;JS脚本语言----编程类语言

  • 浏览器执行JS简介
    浏览器分为两部分:渲染引擎和JS引擎
    渲染引擎:用来解析HTML和CSS,俗称内核,比如Chrome浏览器的blink,老版本的webkit
    JS引擎:也称为JS解释器。用来读取网页中的JavaScript代码,对其处理后运行,比如Chrome浏览器的V8
    浏览器本身不会执行代码,而是通过内置JavaScript引擎(解释器)来执行JS代码。

2.JS的组成

ECMAScript(JavaScript语法):是一种由Ecma国际(前身为欧洲计算机制造商协会),定立ECMA-262标准化的脚本程序设计语言。规定了 JavaScript 脚本的核心语法,如 数据类型、关键字、保留字、运算符、对象和语句等。

BOM(浏览器对象模型): 定义了 JavaScript 操作浏览器的接口,提供了访问某些功能(如浏览器窗口大小、版本信息、浏览历史记录等)的途径以及操作方法。

DOM(页面文档对象模型): 定义了 JavaScript 操作 HTML 文档的接口,提供了访问 HTML 文档(如body、form、div、textarea等)的途径以及操作方法。

3.语言

自然语言:人与人交流时传递信息的载体

机器语言:人与机器交流信息时传递信息的载体

4.JS的编写及运行

1. JS的导入

  • 内联导入

  •    <!-- 内联导入 -->
            <script>
            	//函数-->某种功能模块
                // 将内容打印到大白板上面
                document.write(123);
                // 将内容打印到后台的控制台上面
                console.log(456);
        </script>
        
    
  • 外联导入

      <!-- 外联导入 -->
      <!-- 注意事项:使用src导入到js
      script标签内部不可以写代码 -->
      <script src="02.js">
      </script>
  • 执行顺序:默认自上而下,
  • 一个页面中可以有多个script标签,通常一个页面中会有多个外联script标签,一个内联scr标签,习惯上内联的scr标签写在html跟标签的后面(解决烦恼)

2.语句:js的最小单位:表达式 + 分号

3.注释

    // 单行注释 ctrl + /
        /* 
            多行注释 shift + alt + a 
        */

4.常量与变量

  • 常量:在程序运行的过程中不能改变的量
  • 变量:在程序运行过程中可以改变的量;本质是程序在内存中申请的一块用来存放数据的空间
    使用步骤:1.声明变量 2.赋值
  1. 定义:var 标识符; var是一个关键字,用来声明变量,告知编译器,后面的标识符是一个变量。
    关键字:拥有某种特殊含义的单词
  2. 使用:
    var a ;
    a = 123;//左值,空间
    var b ;
    b = a;//右值,数值
  3. 标识符的限制要求:
    只能由数字,字母,以及下划线和$构成,且首字母不能为数字,其次不要和关键字和系统函数重名
  4. 变量定义的习惯:
    1.见名知意;2.尽量标识符用英文;3.驼峰命名法:如果一个变量名由若干个单词构成,除了第一个单词外,其他单词首字母大写。
  5. 变量的初始化:在变量定义的同时赋值(同一行赋值)
  6. 变量定义的注意事项:
    不允许变量未定义,就使用;不能重复定义变量
  7. 赋值:就是 = 把右边的值赋给左边变量空间中
  8. 更新变量:一个变量被重新赋值后,它原有的值就会被覆盖,变量值将以最后一次赋的值为准
  9. 只声明不赋值结果:undefined
  • 关键字:
    break、else、new、var、 case、 finally 、 return、 void 、 catch 、for 、switch 、 while 、 continue、 function 、this 、 with 、default 、 if 、 throw 、 delete 、 in 、 try 、do 、 instranceof、 typeof
  • 被保留关键字:
    abstract 、 enum 、int 、 short 、 boolean 、export 、interface、 static、 byte 、extends 、 long 、 super 、 char 、 final 、native 、synchronized 、 class 、float 、 package 、throws 、 const 、goto 、private 、transient 、 debugger 、 implements 、protected 、 volatile 、 double 、import 、public

5.数据类型(js是动态语言,变量的数据类型是可以变化的;检验算法合法性的必要条件)

  1. 内置基本类型:
  • 数字:number(包括整型值和浮点型值,数字型三个特殊值 infinity代表无穷大、-infinity代表无穷小、NaN代表一个非数值)(数字型进制最常见的进制有二进制、八进制、十进制、十六进制)
  • 字符串:string
  • 布尔值:boolean(true和false)
  • 未赋初值(声明了变量但是没有给值):underfined
  • 空(var a = null ; 声明变量未空值):null
  1. 引用类型:object(除了内置基本类型都是引用类型)

6.typeof关键字(判断数据类型的关键字)

7. 运算符(也称为操作符,是用于实现赋值、比较和执行算数运算等功能的符号)

运算符的三属性:

  1. 优先级
  2. 结合方向
  3. 操作目数

1.算术运算符:+ 、- 、* 、 / 、%(求余,只要余数不要商)

2.赋值运算符

  • =:将右值赋值给左值
  • 赋值表达式是有值的,该值是右值(可以将左边表达式赋值右边)

3.自增自减运算

  • ++,-- :对某个变量加1或者减1
  • 前加加:先算再用
  • 后加加:先用再算,过了分号(也就是过了该条语句再计算)
  • 单独使用时,运行结果相同
  • 注意事项:只适用变量,不适用于常量

4.关系运算符(比较运算符)

  • 关系运算符:返回的结果为布尔值
  • > >= < <=
  • == 逻辑等
  • != 逻辑不等
  • === 严格等 (必须要求数值和类型一致,不支持系统隐式转换)
  • (面试题)总结:= 作用是赋值,把右边给左边;== 作用判断,判断两边值是否相等(注意此时有隐式转换);===作用全等,判断两边的值和数据类型是否完全相同。

5.逻辑运算符

  • 逻辑运算符:返回的结果是布尔值
  • &&:完成某一种功能,有n个步骤,每个步骤都实现,整个功能才能实现,各个步骤间的关系称为与
  • ||:完成一个功能,有n种方法,任意一个方法都能实现该功能,每个方法间的关系称为或
  • !:某个条件的对立面

8.数据之间的转换

在代码运行时,变量的数据类型是由js引擎根据 = 右边变量值的数据类型来判断的,运行完毕之后,变量就确定了数据类型。

  • 隐式转换:以符号作为区分标准
    1. +,转换结果全为字符串,效果等价于字符串拼接
    2. -,*,/,%等等,转换的结果全为数字
    3. 注意事项:1.两个字符串进行加以外的运算,结果也是数字;2.当遇到非数值型字符串运算时,结果是NaN
  • 显示转换:通过调用函数实现转换数据类型
    1. 字符串转数字
      parseInt(字符串 | | 小数):将字符串转为整形数据
      注意事项:parseInt还可以用来对小数取整
      parseFloat(字符串):将字符串转为浮点型数据
      Number(字符串)可以将字符串转为整形数据也可以转换为浮点型数据
    2. 数字转字符串
      .toString();
    3. 实际应用
      数字转字符串:console.log(123+“”);
      字符串转数字:console.log(“123”/1+10)

9.程序结构设计

顺序结构,顺序执行,自上而下
选择结构
1.if
  1. if(条件表达式)条件表达式的结果一定是一个布尔值,根据真假决定是否执行后面的语句
    if的条件只能修饰后面的一条语句,如果需要修饰后面的多条语句,请用{ }括起来,被{ }括起来的多条语句称为复合语句,复合语句被当做一条语句。
    注意事项:无论if修饰多少条语句,必须都用{ }括起来,可以大大提高代码可读性
if(条件表达式){
   语句;

   }else{

   	else代表之前条件的对立面,else后绝对不允许加条件

   	语句;

   }

 if( ){
   	语句;
   }else if( ){
   	语句;
   }else{
   	语句;
   }

注意事项:if…else if 是一条语句,所有的条件都是互斥的,当某个条件成立时,其他条件则跳出
4. 调试:手动运行程序
目的:1.跟踪代码执行顺序;2.可以观察数值
调试步骤:1.打断点:代码运行时,停止的位置;2.刷新;3.蓝色背景修饰的代码行,代表即将执行,但并未执行;4.单步运行;5.退出,点掉断点。
5. 选择嵌套:一个if 修饰的语句还是一个if,建议选择嵌套不要超过三层(极限五层)

   if(){
           if(){
           }else{
               if(){
               }else if(){
               }else{
                   if(){
                   }else{
                   }
               }
           }
       }else{
       }
判断闰年问题

程序 = 算法 + 语法
(四年一闰&&百年不闰)|| 四百年再闰

2.switch:等值匹配,必须是数值匹配,不能是范围
 switch(匹配值){

        case 被匹配值1:

            语句;

	     break;

        case 被匹配值2:

            语句;

            break;

        case 被匹配值3:

            语句;   

	    break;

            ...

	default:

	       语句;

    }
  1. switch的执行规则,只匹配一次,当遇到匹配条件时,会自上而下依次执行所有语句,直到switch结束
  2. break:阻止switch的穿透效果,直接结束
  3. 所有case条件的对立面,default
3.三目运算(特指条件运算符)

表达式1?表达式2:表达式3;

根据表达式1的真假,返回表达式2或者表达式3

表达式1为真返回2,表达式1为假返回3

4.使用场景
  1. if范围匹配
  2. switch等值匹配
  3. 较为短小的功能用三目运算
循环结构(循环就是重复执行一段代码)
1.while
  • 执行顺序:先条件,如果条件为真,则执行语句,条件为假则跳出循环
  • while(条件表达式){
    语句;
    }
  • 有限次数的循环:
    使用循环的四大表达式:1.循环变量的初始化;2.循环条件;3.循环体;4.使循环趋近于结束的条件
2.do…while
  • do{
    语句;
    }while(条件表达式);
  • 至少会执行一次循环体代码
  • while和do…while的异同:
    当首次条件成立时,它们没有区别,当首次条件不成立时,do…while要多执行一次循环体,而while直接跳出。
3.for
  • for(表达式1;表达式2;表达式3){
    表达式4;
    }
  • 表达式1:循环变量的初始化
  • 表达式2:循环条件
  • 表达式3:使循环趋近于结束的条件
  • 表达式4:循环体
使用场景
  1. 知道循环次数用for
  2. 不知道循环次数用while
  3. 除非保证必须要循环一次,用do…while
案例:水仙花数:一个三位数,个位十位百位的立方和等于该数本身。
4.循环的嵌套:一个循环的循环体是另一个循环
  • 总的执行的次数,是内层和外层循环次数的乘积
  • 建议循环不要超过三层,常用的为两层
  • 九九乘法表:1.核心算法:第几行就有几个*,j控制i的数量;2.什么控制行数:j;3.什么控制*的个数:
5.break和continue
  • break:1.与switch连用,阻止switch的穿透效果;2.与循环连用,跳出本层循环
  • continue:跳出本次循环

10.函数

1.函数的概念及作用

  • 概念:封装的最小的功能模块
  • 作用:1.提高代码的复用性;2.协同开发;3.便于维护。

2.函数的定义:一个功能模块的创造

function   标识符(参数列表){//函数头

	函数体;

}
  • 函数体;以前怎么写代码,现在只是将代码写在{}之间
  • function:关键字,告知编译器后面的标识符是一个函数
  • 标识符:函数的名字,满足标识符命名规则(驼峰命名)
  • 参数列表:a.无参函数;b.有参函数

3.函数的调用:一个功能模块的使用

  • 无参调用:函数名();
  • 有参调用:函数名(参数1,参数2…);

4.函数的形参与实参

形参:在函数定义时,函数名后面括号中的参数

实参:在函数调用时,函数名后面括号中的参数

注意事项:形参与实参是不同的内存单元。形参只有在函数调用时,才会开辟空间,当函数调用结束后,形参的内空间会被释放

  • 内置基本类型数据作为函数实参:值(数值)传递,单向传递,只能由实参传给形参,形参的改变无法影响实参
  • 引用类型作为函数实参:(记住结论)双向传递,可以通过形参改变实参

5.返回值:如果一个函数执行完毕后,需要返回一个数值,这个值就是函数的返回值

  • 函数的返回值通过return关键字带回,函数只能返回一个值
  • 有return关键字的函数才有返回值,没return的函数没有返回值,返回值的值为underfined
  • 函数遇到return则直接跳出(终止函数)

6.函数的设计思想

  1. 函数的功能
  2. 函数的参数
  3. 函数的返回值

7.函数的嵌套调用:一个函数定义时的函数体,调用了其它函数

  • 当被调函数执行完后,回到主调函数按顺序继续执行代码
  • 压栈:函数嵌套调用压入被调函数的过程
  • 弹栈:函数嵌套调用弹出被调函数的过程

8.函数调用的另一种表现形式

<script>
    // 1.第一种
    function fun1() {
        console.log("jjj");
    }

    fun1();
    // 2.第二种(表达式)
    // 在js中万物皆为对象
    // 对象---->变量
    var fun = function () {//匿名函数
        console.log("hhh");
    }

    fun();
</script>

9.函数与事件的关系

  1. 事件:用户对于页面操作时的某种动作;如鼠标的左键单击,左键双击,划入,划出等等。
  2. 事件与函数的关系:任何事件触发时,其实本质就是在通过用户的动作调用函数。
  3. 如何将事件和函数绑定起来?
    第一种:通过HTML元素直接绑定
    <body>
          <!-- 
              onclick="fun()"
              将button元素单击的事件与fun函数进行绑定
              事件类型="函数名()"
           -->
          <button onclick="fun()">点击</button>
      </body>
      
      </html>
      <script>
          /* function fun() {
              console.log("hhh");
          } */
          // 第一种:用HTML元素直接绑定
          var fun = function () {
              console.log("hhh");
          }
      </script>
    
    第二种:通过js对象绑定
     ` <body>
         <!-- 
              onclick="fun()"
              将button元素单击的事件与fun函数进行绑定
              事件类型="函数名()"
           -->
          <!-- <button onclick="fun()">点击</button> -->
          <button id="btn">点击</button>
      </body>`
      
      </html>
      <script>
          /* function fun() {
              console.log("hhh");
          } */
          // 第一种:用HTML元素直接绑定
          // var fun = function () {
          //     console.log("hhh");
          // }
      
          // 2.通过js对象绑定
          // 需要将HTML元素转换为js对象
          // document.getElementById("id名"):将ID对象的HTML元素转为js对象
          var oBtn = document.getElementById("btn");
          // 目的,可以通过js对象的操作HTML元素
          // 如何操作js对象:js对象.属性名
          /* var fun = function () {
              console.log("hhh");
          }
          oBtn.onclick = fun; */
      
          oBtn.onclick = function () {
              console.log("hhh");
          }
      
      </script>
    
    
    
    
    
    
    
    
    
    
    
    
    
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值