JS语法、变量、数据类型

JS学习总结

与HTML,CSS的异同

相同点:JS,HTML,CSS的代码都可以在浏览器中运行。即:运行环境是浏览器。
不同点:html,css 不叫编程语言   js是编程语言  js的运行环境不只浏览器,还可以在其它的环境中运行。


编程语言分类:
    前端语言:JS(浏览器上)...
    后端语言:Java C++ Python Go JS C# ...

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中的变量

数据:

软件打开后,界面上有很多的数据,也叫状态。

数据的存储

这个状态(数据)可保存在两个地方:内存与硬盘。
项目运行起来,只有把数据加载到内存中,才能使用数据。
内存中的数据断电丢失,硬盘上的数据断电不丢失。

内存空间地址

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

变量:

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

JS中如何定义一个变量:

var a = 110;  // 定义了一个变量  变量的名是a  变量的值是110;

变量的分类及特点:

    1)全局变量   全局变量在函数内外部都能访问到
    2)局部变量   局部变量只能在函数内部访问到
    分界点是:函数
    只要把变量写在函数里面就是局部变量,只要写在函数外面就是全局变量。

在计算机中,=叫赋值运算符:
1+1 + 加号 左结合性
= 右结合性 从右向左
var name = “wangcai”; 把wangcai字符串值给name这个变量名所对应的内存空间
f() // 一个函数没有调用相当于这个函数没有写

var address = "郑州";     // 全局变量
function f()  // 定义函数 函数必须通过函数进行声明
{       
var m = 111; // 局部变量  函数内部的变量叫局部变量
}
    if(true){
        var k = 123; // 全局变量
    }

    for(var i=0; i<10; i++){  // i全局变量
        var o = 666; // o是全局变量
    }
   
    var a = 110;         // 声明一个变量
    function f() {       // 声明一个函数 
      console.log(a);      //在函数里面访问全局变量
      var b = 666;         // 局部变量
      console.log(b);      // 函数内部是可以访问到局部变量
    }

f() // 调用函数 一个函数没有调用相当于这个函数没有写

函数的声明

var name = "xiaoqiang";
var age = 110;
var address = "北京";   // 单独声明

var m = 1, n = 2;       // 连续声明 等效于var m=1,var n=2;

k = 123;                // 不使用var   无var的变量只能是全局变量 不论写在函数内外。

JS中的数据类型:

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

数据类型分类:

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

JS中的number数据类型

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

JS中的string数据类型

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

SyntaxError表示语法错误

JS中的boolean数据类型

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

JS中的undefined数据类型

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

JS中的数据类型转化

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

在JS中,下面的值转成false,其它值都转成true:
    0  -0
    ""
    undefiend
    null


前提:在JS中,运算符两侧需要保存数据类型一致,
如果不一致,JS解释器会帮你把一个数据类型转成另一个数据类型。

代码段

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

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

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

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

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

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

其他

    f();              
    function f() {     // 使用function声明了一个函数:函数名是f  函数值是{}
    console.log("f...")
    }                 // 定义了一个函数f


++在前和++在后,对于i的值来说,都是加1操作
整体也有一个值 此时++在前和++在后就不一样

var i = 0;
var r1 = i++; // i++整体也有一个值
console.log(r1); // ++在后,整体的值是一个旧值  0

var i = 0;
var r2 = ++i;  // ++i整体也有一个值
console.log(r2); // ++在前,整体的值是一个新值

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

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

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

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

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

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

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

猜你喜欢

转载自blog.csdn.net/sd6022/article/details/107411825