js基础

什么是JS

	js作为一门编程语言,与html.css,js相比,都能够在浏览器中运行,浏览器都是他们的运行环境。但html和css不能够叫做编程语言,js是一门编程语言,js还可以在其他环境中进行。
	js时前端开发中的核心,在前端开发中,js几乎是垄断的效果,而后端语言的种类足够多。

js能做什么

	1)开发网站
    2)开发app
    3)小程序
    4)游戏开发 小程序游戏  网页游戏
    5)写后端 node.js
    6)嵌入式  c
    7)区块链
    ....

JS三种写法

1)把js写在html文件中 学习时通常就写在script标签中(内部写法)
2)把JS写在JS文件中,然后在html文件中通过script标签引入 写项目时通常会把JS写在一个单独的文件中(外部写法)
3)把JS代码写在开始标签中,当成开始标签的属性(行内写法)

js基本语法

	 1)JS是区分大小写  var a = 1;  var A = 2;
    2)忽略空白符(空格  换行  tab)
    3)语句分号可加可不加
    4)注释  单行注释  多行注释  注释是给程序员看的
    5)标识符 和 关键字  var a = 110;   var 关键字   a变量名标识符

变量

	 数据:一个软件打开后,界面上有很多的数据,也叫状态,这个状态可以保存在
    两个地方,一个是内存,一个是硬盘
    项目运行起来,只有把数据加载到内存中,才使用使用数据。

    内存中的数据,一断电,数据就没了,

    还有一个地方,也可以保存数据,是硬盘,硬盘上的数据断电是不会丢失的。

    内存空间地址:就是一块内存空间的地址,可以通过地址操作它对应空间中的数据,使用地址来操作非常不方便,指针。

变量:变量就是内存中的一个空间。
    变量名:内存空间的别名  对变量名的操作就是对内存空间的操作
    变量值:存储在内存空间中的状态(数据)

在JS中,如何定义变量:
    var a = 110;  // 定义了一个变量  变量的名是a  变量的值是110;

在计算机中,=叫赋值运算符:
    1+1  + 加号  左结合性
    = 右结合性  从右向左
    var name = "wangcai";   把wangcai字符串值给name这个变量名所对应的内存空间

变量的分类:
    1)全局变量
    2)局部变量
    分界点是:函数
    只要把变量写在函数里面就是局部变量,只要写在函数外面就是全局变量。

   全局变量和局部变量有什么特点:
        1)全局变量可以在函数内部都能访问到
        2)局部变量只能在函数内部访问到

js中的数据类型

为什么需要数据类型:
age 10
id 3456783456783456789

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

JS中的数据类型:
    基本数据的类型:
        number  数字  var a = 110;  int a = 110;
        string  字符串 ”“  ‘’  JS中不分字符和字符串 都叫字符串
        boolean  true false  布尔类型
        undefiend  没有值
        null  没有值
    引用数据类型:
        object  对象
            array  数组
            function 函数  在JS中函数也是一种数据类型

number类型:
1)number是一个数据类型,这个数据类型对应的值有无数个。
2)在JS中number数据类型是不分整数和小数 都是number
3)可以通过typeof查看一个变量值的数据类型
4)最大值 和 最小值
5)number可以通过不同进制显示 进制 10进制 2进制 16进制 8进制
6)NaN Not a Number 不是一个数字
7)JS中不要对小数运算 要运算先转成整数 得到的结果往往不对

在JS中,说到数据类型,主要指变量值的数据类型。

typeof是运算符 + - * / 都是运算符

Number叫类,也叫构造器,也叫函数

string数据类型
1)在JS中 使用‘’ “”把字符串包起来 不包 JS会给它当成变量
2)单引号不要嵌套单引号 双引号不要嵌套双引号 外单内双 外双内单
3)string数据类型对应的数据有无数个

SyntaxError表示语法错误

boolean数据类型

1)boolean数据类型对应的值就两个 true false
2)true 和 True 不一样的 JS是区分大小写的

undefined
1)undefiend是一个数据类型,这种数据类型对应的值是undefiend
2)什么时候会出现undeined?
一个变量没有赋值 它的值是undefiend 这个值的类型是undefiend

隐式类型转化

  • 叫运算符 123操作数 "abc"也叫操作数
    一个运算符如果有两个操作数,这个运算符叫二元运算符,也叫二目运算符,还叫双目运算符
      • =
        如果一个运算符只有一个操作数,这个运算符叫一元,单目运算符
        是双元运算符 运算符你要保证两侧操作数的数据类型要一致

执行

JS代码在执行时分两个阶段:
1)预编译
2)代码执行
每一个阶段做的事情是不一样的。

定义变量和声明变量:
    定义变量:var a = 110;   定义 = 声明+赋值
    声明变量:var a = 110;  说的声明仅仅是说var a   后面是赋值

预编译: 提升
    把加var的变量进行提升  变量声明会提升  变量的赋值是不会提升
        提升到了代码段最前面
    把使用function声明的函数进行提升  提升的是整个函数声明

代码的执行:
    一行一行执行

(代码段)
一个script标签就是一个代码段。
JS代码在执行时,是一个代码段一个代码段执行。

执行上下文

执行上下文( Execute Context):
EC

EC的作用:给代码提供数据

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

 全局执行上下文:
    全局代码在执行时时,就会产生全局的EC。 EG(G)
 局部执行上下文:
    函数代码在执行时,就会产生局部的EC。调用一个函数就产生一个EC,调用100个函数,就产生100个EC。

 EC栈:
    栈:杯子
    每产生一个EC就会放到杯子中,说白了,就是杯子中放鸡蛋。
    栈:先放进去的后出来

变量的区别

1)在全局代码中,加var会提升,没有var的不会提升。
2)不管加没加var的全局变量,都会作为window的属性
3)没有加var的变量,只能作为全局变量,只要是全局变量,肯定是window的属性
4)加var的局部变量,不会作为window的属性

函数

函数是任何编程语言都有概念

在JS中定义函数有两种形式
函数定义
函数表达式

 函数定义  f叫函数名  ()是函数特有的标识  {} 叫函数体
 定义 = 声明 + 赋值

函数的储存

内存分堆内存和栈内存
在JS中,基本数据类型存储在栈中 引用数据类型存储在堆中

上下文的执行

在这里插入图片描述
闭包的概念:
在一个函数内部嵌套了一个函数,并且里面的函数引用外面的函数的变量
里面的函数就可以叫闭包

算法运算符

算法运算符
当对非Number类型的值进行运算时,会将这些值转换为Number,然后在运算。(除了字符串的加法)
(任何值和NaN做运算都会得到NaN)
+运算
可以对两个值做加法运算,并将结果返回
如果对两个字符串进行加法,则会做拼串
任何值和字符串+运算,都会转化为字符串并做拼串处理。
可以为任何的数据类型+一个空串 “” 即可将其转化为string(隐式类型转换,由浏览器自动完成,实际也是调用了string函数)
var c=123;
c = c + " ";
~ c = string©;

练习
result = 1 + 2 + “3”; //33
result = “1” + 2 + 3; //123

-运算
运算时都转化为number

任何值 - * / 运算都会自动转化为number 可以通过-0 *1 /1 来转换为Number

%取模运算(余数)

一元运算符:( - +)
- 取反

对于非Number类型的值,先转化为Number,然后再运算,可以对于一个其他的数据类型使用+号,使其转化为number,原理和Number()相同。(隐式类型转换)
a=true;
a=-a; \a=-1
a=“18”;
a=+a; //18
var result = 1 + + “ 2 ” + 3 / /6

–运算同理

逻辑运算符

非布尔值的与或运算

&&与运算 如果两个值都为true,则返回后边的值
如果两个值之中由false,则返回靠前的false
如果第一个值为true 则必然返回第二个值
如果第一值为false,则返回第一个值
var result = 5 && 6 ;
输出6

或运算
如果第一个值为false,则直接返回第二个值
第一个值为true,则直接返回第一个值

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值