前端学习记录22-JavaScript-(变量、数据类型)

解释型语言和编译型语言

js是解释型语言

1.login.html
2.js引擎 解释器
3.机器语言
4.执行

运行时进行即使解释 并且立即执行

java是编译型语言

1.login.java
2.编译器编译 javac.exe
3.中间代码文件 login.class
4.运行时编译 即时编译器程序
5.机器语言
6.执行

代码执行之前进行编译 生成中间代码文件

变量

存放数据的容器 通过变量名获取数据

本质:程序在内存中申请一块存放数据的空间

    var username = '海浪';
    var address = 'wave';
    var age = 21;
    var email = 'wave@163.co
    var money = '20k';
    console.log(username);
    console.log(address);
    console.log(age);
    console.log(email);
    console.log(money);

在变量中存储输入信息的方法是
直接让变量=输入内容
而不是让输入内容=变量

    var username;
    username = prompt('请输入你爱谁');
    alert(username);

变量的使用

变量使用分两步
1.声明变量
2.赋值
声名变量 var age; 声明一个名为age的变量

var是js的关键字 使用该关键字声明变量后 计算机会自动分配内存空间
变量名最好不用要用一些比较特殊的名称 例如name

    var age = 11;
    console.log(age);
    var love = '我爱你,尽管你放弃了我';
    console.log(love);

变量语法规范

由字母、数字、下划线、美元符号组成
严格区分大小写
不能以数字开头
不能是关键字、保留字 例如:var while if 之类的

变量名必须有意义 最好是英文单词 别整那个拼音 谁也看不懂

遵守驼峰命名法 首字母小写后面单词首字母大写 例如 myFirstName
name这个单词 在某些浏览器有特殊意义 所以最好别用这个作为变量名

可同时声明多个变量,类似于c语言

声明变量的特殊情况
1.只声明不赋值 结果为undefined
2.不声明不赋值 直接会报错
3.不声明直接赋值 可以使用

如果js中有一句报错了 下面就不会执行了
js允许不赋值直接使用 这个变量就会变成全局变量 不推荐使用

    var love = '我爱你',
    	wave = '海浪',
        username = '算了吧';

简单数据类型与复杂数据类型的实质性区别


简单数据类型(基本数据类型、值类型)

值类型: 在储存时遍历中存储的是值本身
null比较特殊 返回的是一个空的对象 (本身这应该是个bug,但是没改)

根据这个bug有个用法 如果有个变量以后打算作为对象使用 但是没有合适的内容 可以先让该变量=null


复杂数据类型(引用类型)

引用类型:在存储变量中存储的仅仅是地址
需要通过new关键字创建的对象(系统对象,自定义对象) 例如 Object、Array、Date


堆栈(内存空间分配)

栈(操作系统)
由操作系统自动分配释放存放函数的参数值、局部变量的值等,存放简单数据类型

堆(操作系统)
存储复杂数据类型,一般由操作员分配释放,如果操作员不释放,由垃圾回收机制回收

js中没有堆栈的概念


简单数据类型空间分配

在栈里只存放值,不存放变量名 变量名是指向值的

复杂数据类型空间分配

例如声明了个数组 该数组指向 存放在栈里的地址 该地址指向 堆里的数据

简单类型传参

函数的形参也可以看作为变量,当我们把一个值类型的变量 作为参数传递给函数的形参时
其实是把变量在栈空间里的值 复制 给了形参 那么在方法内部对形参做任何修改 都不会影响到外部变量

复杂类型传参

函数的形参同样看作为变量,当我们把引用类型变量传递给参数时,
其实是吧变量在栈空间中的地址复制给了形参, 而形参和实参指向的是一个相同的堆地址,所以操作的是相同的对象


数据类型

不同的数据所占存储空间不同,为了充分利用空间,定义不同的数据类型

js属于弱类型或动态语言,不同提前声明数据类型,在程序运行过程中,数据类型才会被确定

js的变量 数据类型只有在程序运行过程中,根据等号右边的值来确定

因为上述特性js的变量可作用于不同的数据类型

例如 var num=10;本身存的是number
num='我爱你' 同时在后边可以存字符串,在js中不会报错

简单数据类型

Number(数字型)
String(字符串)
Boolean(布尔类型),
Undefined(声明变量没有赋值)
Null 空

复杂数据类型

Object 对象

简单数据类型-数字型

number(数字型 包含了整型和浮点型),

八进制 0-7 在程序中数字前面加0表示八进制
010八进制 转换为 十进制 就是 8

十六进制 0-9 a-f 数字前加入0x表示十六进制

数字型的最大值和最小值

alert(Number.MAX_VALUE); 1.7976931348623157e+308
alert(Number.MIN_VALUE); 5e-324

数字型三个特殊值

Number.MAX_VALUE * 2 Infinity 无穷大
-Number.MAX_VALUE * 2 -Infinity 无穷小
console.log('我爱你' - 100); NaN 非数值 not a number

验证一个变量否是数字isNaN()

如果是数字返回 false
不是数字返回 true

简单数据类型-字符串型

只要是加了单引号或者是双引号的 就被判断为字符串类型
哪怕是 '12' 这样也会被判断为字符串类型

推荐使用单引号,但是不能没有引号 没有引号会报错

引号嵌套需要 外双内单 外单内双

字符串的转义符

    \n 换行
    \\ 斜杠\
    \' 单引号
    \" 双引号
    \t 缩进
    \b 空格 这个空格有的时候会乱码

检测字符串长度(.length)

变量名.length

字符串拼接

多个字符串+任何类型=拼接后的新字符串
console.log(str1 + num); 最后结果是 字符串类型

简单数据类型-布尔型

true 和 false

true 和 false 在进行合并时 按 1 和 0计算

简单数据类型-Undefined和Null

如果一个变量声明未赋值
就是undefinded未定义数据类型

未定义数据类型 和字符串进行合并 最后是字符串型
和数字型合并 最后结果为 NaN

null 和 字符串进行合并 最后是字符串型
和数字型合并 还是数字型 例如 null+1=1

获取一个变量的数据类型

使用typeof可获取数据类型
语法为 typeof 变量,或变量.typeof();

null 使用 typeof 返回的数据类型为 object 而不是 null
使用 prompt 输入的值为 string

    var num = 10;
    console.log(typeof num);
    var str = '我爱你';
    console.log(typeof str);
    var flag = true;
    console.log(typeof flag);
    var vari = undefined;
    console.log(typeof vari);
    var time = null;
    console.log(typeof time);
    var year = prompt('请输入你爱她多少年');
    console.log(year);
    console.log(typeof year);

数据类型转换

使用表单、prompt输入的默认为字符串型 不能直接进行运算

变量转换为字符串型

1.toString() 转换成字符串 使用为 变量.toString()
2.String() 强制转换 使用为 String(变量)
3.加号拼接字符串
和字符串拼接均为字符串
可以直接合并空字符串 也称隐式转换

变量转换为数字型

1.parseInt(变量) 转换为整型
2.parseFloat(变量) 转换为浮点型
上述该函数会自动忽略字符串 但是不能是字符串开头 可以用 120px 但是不能用 a120

3.Number(变量) 强制转换 强转不能识别其他字符串内容 如果是120px 则会返回NaN
4.使用算数运算 - * / 可进行隐式转换 例如 '10'-0 返回结果为数字型

变量转换为布尔型

Boolean(变量)

只有空、否定值、null、空字符串、0、NaN、undefined 会被转换为false
其他都会为true

标识符

变量、属性、函数、参数
标识符不能是关键字或保留字

关键字

js本身使用了的字
常见的代码那一堆

保留字

预留的关键字,未来可成为关键字的

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值