初识JS

初始JS

1. 什么是JS?

JS:javascript,简称JS,他是一门编程语言。

2. JS能做什么?

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

3. JS的三种写法

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

//内部写法
<script>
    var a = 100;
    console.log(a);
</script>
//外部写法
<script src="./out.js"></script>
//行内写法
<button onclick="console.log(888)">点我</button>

4. JS的基本语法

基本语法:
1)JS时需要区分大小写的,var a = 1; var A = 2;
2) JS代码运行时会自动忽略空白符(空格 换行 tab)
3)每一条语句后分号可加可不加
4)注释,//单行注释,/多行注释/
5)标识符和关键字,var a = 100,var时关键字,a是变量名标识 6)…

//单行注释
//var时关键字,a时变量名标识符
var a = 100;
/*多行注释*/
/*每一条语句后的分号可加可不加
  但是为了代码整齐好看
  建议全加分号
  或者全不加分号 
*/
var b = 200;
var c = 300

5. JS中的变量

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

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

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

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

    //写在函数外部的变量叫局部变量
    var address = "郑州";//全局变量
    Address = "河南";//全局变量

    //定义函数 函数必须通过function进行函数声明
    //定义了一个函数f,函数名是f。
    function f(){
        //写在函数内部的变量叫局部变量
        var m = 100;//布局变量
        a = 200;//全局变量
    }

    if(address = "郑州"){
        var k = 300;//全局变量
        b = 200;//全局变量
        console.log(k);
    }

   for(var i=0; i<3; i++){//i是全局变量
        var o = 400;//o是全局变量
        c = 200;//全局变量
        console.log(i);
   }
   k = 123;
   //如果没有加var,此时这个变量只能是全局变量,不管你是写在函数里边还是函数外边

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

    var a =100;//全局变量
    function f1(){
        console.log(a);//函数内部可以访问到全局变量
        var b=200;//局部变量
        console.log(b);//函数内部可以访问到它内部的变量
    }
    f1();//一个函数没有调用相当于这个函数没有写
    console.log(b);//b is not defined,函数外部不能访问局部变量

6. JS中的数据类型

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

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

6.1 JS中的number数据类型

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

    var a = 100;
    var b = 5.21;
    console.log(a);
    console.log(typeof a);//查询变量a的值的数据类型
    console.log(typeof b);//查询变量b的值的数据类型
    console.log(Number.MAX_VALUE);//MAX_VALUE 属性JavaScript 中可表示的最大的数
    console.log(Number.MIN_VALUE);//MIN_VALUE 属性JavaScript 中可表示的最小的数
    if(a>b){
        console.log("a的值大于b的值");
    }
    else{
        console.log("b的值大于a的值");
    }

6.2 JS中的string数据类型

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

    var address = "beijing";//string类型
    console.log(address);
    console.log(typeof address);//查询变量address的值数据类型
    
    var a = "这是一个'字符串'数据类型" ;//外双内单
    var b = '你好"晚安"';//外单内双  
    console.log(a);
    console.log(b);

6.3 JS中的boolean数据类型

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

    var b = true;//布尔类型
    console.log(b);
    console.log(typeof b);//查询变量b的值的数据类型

6.4 JS中的undefined数据类型

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

    var a;//声明了一个变量a,但是并没有给a赋值。
    console.log(a);//此时a的值是空值,即为undefined。
    console.log(typeof a);//当a的值是空值时,a的值的数据类型undefined。

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

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

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

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

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

    console.log(a);
    //此时代码预编译时已经把变量a的声明(var a;)提升到了代码段的最面。
    //则此时输出变量a的值为undefined。
    var a = 100;
    console.log(a);//输出变量a的值为100。

    console.log(b);
    var b = f();
    function f(){
        console.log("这是一个函数");
    }
    f();//调用函数。

   var i = 0;
   a=i++; //i=0+1=1  a=0
   b=++i; //i=1+1=2  b=2
   console.log(i);//2  i=2
   console.log(a);//0
   console.log(b);//2

   var i = 0;
   a=i++; //i=0+1=1  a=0
   b=++i; //i=1+1=2  b=2
   console.log(i);//2  i=2
   console.log(i++);//2 i=2+1=3 i++=2
   console.log(++i);//3 i=3+1=4 ++i=3

8. 初步了解执行上下文(Execute Context)

  在JavaScript中,执行上下文(EC)是一个基本概念,在执行上下文中,包括了变量对象(VO,Variable Object),作用域链(Scope Chain)等,与闭包,函数/变量提升息息相关。EC的作用:给代码提供数据。

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

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

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

    var n=100;//全局变量
    console.log(n);
    console.log(window.n);
    //window是一个全局变量,只要是一个全局变量或全局函数都会挂载到window上


    var a = 100;//全局变量
    function f() {
        console.log("f...");
    }//全局函数
    f();
    f();
    f();

在这里插入图片描述

9. let和const声明变量

let:
   1)let声明的变量没有提升(let声明的变量也提升,仅仅是没有初始化)
   2)let 配合 {} 也可以形成块级作用域
   3)使用let声明的变量不会挂载到GO上
   4)使用let不能重复声明

    console.log(a);
    let a=1;//Cannot access 'a' before initialization


    if(true){
        var a = 110; // 全局变量
        // b只能在当前的{}中被访问到 出了块就访问不了
        let b = 666; // let + {} 形成块级作用域
    }
    console.log(b); // b is not defined


     let a = 110;
    console.log(window.a); // undefined 访问一个对象上没有属性,得到的就是und


    let a = 1;
    let a = 2;
    console.log(a); // Identifier 'a' has already been declared

const: const是声明一个常量
   1)const声明的常量也没有提升
   2)const配合 {} 也可以形成块级作用域
   3)使用const声明的常量不会挂载到GO上
   4)使用const不能重复声明
   5)const在声明常量时,必须赋值

   console.log(a);
   const a = 1;  //  Cannot access 'a' before initialization
   

   if(true){
           const a = 111;
       }
       console.log(a); //  a is not defined


    if(true){
             const a = 111;
         }
         console.log(a); //  a is not defined


    const a = 1;
    const a = 2;
    // Identifier 'a' has already been declared
    console.log(a);


    const a;
    a = 1;
    console.log(a);
    //Missing initializer in const declaration常量声明中缺少初始值设定项
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值