JS基础知识

JS简介

JavaScript(简称“JS”) 是一种具有函数优先的轻量级,解释型或即时编译型的 高级编程语言 。虽然它是作为开发Web页面的脚本语言而出名的,但是它也被用到了很多非浏览器环境中,JavaScript 基于原型编程、多范式的动态脚本语言,并且支持面向对象、命令式和声明式(如函数式编程)风格。

JS的组成部分

ECMAScript,描述了该语言的语法和基本对象。
文档对象模型(DOM),描述处理网页内容的方法和接口。
浏览器对象模型(BOM),描述与浏览器进行交互的方法和接口。

JS的基本特点

JavaScript是一种属于网络的高级脚本语言,已经被广泛用于Web应用开发,常用来为网页添加各式各样的动态功能,为用户提供更流畅美观的浏览效果。通常JavaScript脚本是通过嵌入在HTML中来实现自身的功能的。

  • 是一种解释性脚本语言(代码不进行预编译)。
  • 主要用来向HTML(标准通用标记语言下的一个应用)页面添加交互行为。
  • 可以直接嵌入HTML页面,但写成单独的js文件有利于结构和行为的分离。
  • 跨平台特性,在绝大多数浏览器的支持下,可以在多种平台下运行(如windows,Linux,Mac,Android,IOS等)
  • Javascript脚本语言同其它语言一样,有它自身的基本数据类型,表达式和算术符及程序的基本程序框架。Javascript提供了4种基本的数据类型和两种特殊数据类型用来处理数字和文字。而变量提供存放信息的地方,表达式则可以完成较复杂的信息处理。
  • 可以实现web页面的人机交互。

JS的特性

JavaScript脚本语言具有以下特点:

  1. 脚本语言。 JavaScript是一种解释型的脚本语言,C、C++等语言先编译后执行,而JavaScript是在程序的运行过程中逐行进行解释。
  2. 基于对象。 JavaScript是一种基于对象的脚本语言,它不仅可以创建对象,也能使用现有的对象。
  3. 简单。 JavaScript语言中采用的是弱类型的变量类型,对使用的数据类型未做出严格的要求,是基于Java基本语句和控制的脚本语言,其设计简单紧凑。
  4. 动态性。 JavaScript是一种采用事件驱动的脚本语言,它不需要经过Web服务器就可以对用户的输入做出响应。在访问一个网页时,鼠标在网页中进行鼠标点击或上下移、窗口移动等操作JavaScript都可直接对这些事件给出相应的响应。
  5. 跨平台性。 JavaScript脚本语言不依赖于操作系统,仅需要浏览器的支持。因此一个JavaScript脚本在编写后可以带到任意机器上使用,前提上机器上的浏览器支 持JavaScript脚本语言,JavaScript已被大多数的浏览器所支持。

JS与HTML、CSS的对比

相同点: 三者运行环境都可以在浏览器中。
不同点: HTML、CSS 不叫编程语言,JS运行环境不只是浏览器,也可以是其他环境。

JS引入方式

  1. 在head中引入 JavaScript 函数
<script>标签写在<head>标签中
  1. 在body中引入 JavaScript 函数
<script>标签写在<head>标签中
  1. 引入外部的 JavaScript文件
把JS代码写在JS文件中,然后再html文件中通过<script>标签引入,写项目时通常会把JS写在一个单独的文件中,利用是src

JS基本语法

  1. JS区分大小写
  2. 忽略空白符(空格 换行 tab)
  3. 语句分号可加可不加
  4. 单行注释// 多行注释/* */
  5. 需要特别注意标识符和关键字
  6. 不能以数字开头

JS中的变量

变量是用于存储信息的“容器”,也就是内存中的一个空间。

  1. 变量名
    内存空间的别名
注:
 变量必须以字母开头,变量也能以$ 和_ 符号开头(不推荐)
 区分大小写(y和Y是两个不同的变量)
  1. 全局变量和局部变量
    全局变量与局部变量的分界点是函数,函数外部的是全部变量,内部的是局部变量。全局变量在函数内外都可以访问,局部变量只能在函数内部访问。
  2. 变量值
    存储在内存空间里的值

数据类型

为了更加合理的使用内存空间,基本上所有的编程语言中都提出了数据类型的概念,研究针对不同的数据,分配不同的空间。

  1. 基本数据类型
    (1)number: 数字型
  • number是一个数据类型,这个数据类型对应的值有无数个。
  • 在JS中number数据类型是不分整数和小数 都是number
  • 可以通过typeof查看一个变量值的数据类型
  • 最大值 和 最小值
  • number可以通过不同进制显示 进制 10进制 2进制 16进制 8进制
  • NaN Not a Number 不是一个数字
  • JS中不要对小数运算
    (2)String: 字符串类型
  • 在JS中 使用‘’ “”把字符串包起来 不包 JS会给它当成变量
  • 单引号不要嵌套单引号 双引号不要嵌套双引号 外单内双 外双内单
  • string数据类型对应的数据有无数个
    (3) boolean 布尔类型
  • boolean数据类型对应的值就两个 true false
  • true 和 True 不一样的 JS是区分大小写的
    (4)undefiend 没有值
  • undefiend是一个数据类型,这种数据类型对应的值是undefiend

出现undeined的原因:一个变量没有赋值 它的值是undefiend 这个值的类型是undefiend

引用数据类型

object 对象
array 数组
function 函数

JS的数据类型转换

隐式类型转化:静悄悄地,JS代码不知不觉地就进行了类型转化
强制类型转化:写代码进行转化

parseInt()//将非整数类型的转换为整数类型
parsefloat()//将非小数类型的转化为小数类型
等等

typeof 操作符

你可以使用 typeof 操作符来查看 JavaScript 变量的数据类型。

typeof "John"                 // 返回 string
typeof 3.14                   // 返回 number
typeof NaN                    // 返回 number
typeof false                  // 返回 boolean
typeof [1,2,3,4]              // 返回 object
typeof {name:'John', age:34}  // 返回 object
typeof new Date()             // 返回 object
typeof function () {}         // 返回 function
typeof myCar                  // 返回 undefined (如果 myCar 没有声明)
typeof null                   // 返回 object

JS代码在执行时分两个阶段

  1. 预编译
    把加var的变量进行提升 变量声明会提升 变量的赋值是不会提升
    提升到了代码段最前面,把使用function声明的函数进行提升,提升的是整个函数声明
  2. 代码执行
    从头到尾,代码一句一句的执行。

加var的变量和没有加var的变量的区别

<script>
// 1)在全局代码中,加var会提升,没有var的不会提升。
     console.log(a);
     a = 110;  // a is not defined

// 2)不管加没加var的全局变量,都会作为window的属性
     var a = 1;
     b = 2;
    console.log(window.a)
     console.log(window.b)

// 3)没有加var的变量,只能作为全局变量,只要是全局变量,肯定是window的属性
     function f() {
         a = 666;
    }
     f()
     console.log(window.a)

// 4)加var的局部变量,不会作为window的属性
     function f() {
         var a = 666;
     }
    f()
     console.log(a)
     访问一个对象上不存在的属性,结果就是und
     console.log(window.a) // undefined
</script>

初步了解执行上下文( 给代码提供数据)

代码分两类:
全局代码 函数外面的代码叫全局代码
函数代码 一个函数就是一个局部代码

全局执行上下文:
    全局代码在执行时时,就会产生全局的EC。 EG(G)
 局部执行上下文:
    函数代码在执行时,就会产生局部的EC。调用一个函数就产生一个EC,调用100个函数,就产生100个EC。
 EC栈:
    栈:杯子
    每产生一个EC就会放到杯子中,通俗的说就是杯子中放鸡蛋。
    栈:先放进去的后出来

初步了解函数

函数是由事件驱动的或者当它被调用时执行的可重复使用的代码块。
函数定义= 声明 + 赋值
函数就是包裹在花括号中的代码块,前面使用了关键词 function:

注意:调用函数时,就会把函数体中的代码都执行了,函数调用的过程就是实参向形参赋值的过程,一个函数没有返回值,返回的类型就是undefined。

声名变量和常量

用法:声明变量用let,声明常量用const。 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值