[前端笔记013]JavaScript基础知识、字面量、变量、常量、标识符、数据类型、类型转换、运算符

资源

JS基础知识

  • MCMAScript是JavaScript的标准
  • 完整的JavaScript包括,MCMAScript,DOM,BOM
  • 解释性语言,函数式编程,单线程,面向对象
  • 编写位置:
    1. 写在网页中的<script></script>
    2. 外部的js文件中,然后使用<script src=""></script>引入
    3. 标签的指定属性中,button的onclick属性,a的href属性href=“javascript:…;”
  • 输出方式:alert(),console.log(),document.write()
  • 注释:多行注释/**/,单行注释//
  • js严格区分大小写
  • js中多个空格和换行会被忽略
  • js中每句应该以封号结尾,但有自动添加封号的机制,不写也行,但还是推荐写

字面量、变量和常量

  • 字面量可以直接使用,1,2,3,‘hello’,true,null这些
  • 变量:新的:let 变量名=值,旧的:var 变量名=值;主要区别是let生成的变量有块作用域,var是函数作用域
  • 变量存的是存储值的内存地址,若两个变量的存储值相同,则两个变量指向相同的内存地址
  • 变量没有类型,typeof检查的是变量指向的值的类型,typeof返回的是字符串
  • 常量:使用const声明常量,只能赋值一次,通常全大写

标识符和数据类型

  • 标识符:可以自主命名的内容,变量名,函数名,类名等
  • 表示符命名规则:
    1. 只能含字母、数字、下划线和$,且不能以数字开头
    2. 不能是js中的关键字和保留字,具体有哪个可以查
    3. 不建议使用内置的函数或类名作为变量名
    4. 命名规范:见前端代码规范
  • 数据类型由原始值和对象组成
  • 原始值有七种,下面介绍
  • 数值(Number)
    1. 整数和浮点数都是number类型
    2. 大小并不是无限大,大于等于10^16后显示近似值,再大显示科学计数法,
    3. 再大就是Infinity,表示无穷,特殊数值
    4. 15位的十进制数都可以精确表示
    5. NaN也是一个特殊的数值,表示非法的数值
    6. 进制数开头:二进制0b,八进制0o,十进制无,十六进制0x
  • 大整数(BigInt)
    1. 表示比较大的整数
    2. 以n结尾,范围无限制,比如let a=99999999999999999999999999999999n
    3. 无法与number类型的直接运算
  • 字符串(String)
    1. 使用单引号h或双引号b表示字符串,推荐使用单引号
    2. 转义字符\反斜杠,回车上面的,用于在字符串中输出特殊的字符,\n,\t这些
    3. 反斜杠还可以用于代码的中的换行,比如一行写的太才的时候的时候,但不推荐使用,部分浏览器不支持
    4. 模板字符串,使用反引号包裹内容 ,一是可以用于代码中换行,但用的不多,最重要的二是可以使用${}嵌入变量,例:
let name=xxx ;let he=`${name}`
  • 布尔值(Boolean),值有 true 或者false
  • 空值(Null)
    1. 用来表示空对象,值只有null,
    2. 使用typeof 返回类型时返回的是’object’,无法检查空值
  • 未定义(Undefined)
    1. 当声明一个变量未赋值时,值为undefined
    2. 使用typeof 返回类型时返回的是’undefined’\
    3. 与空值的区别是,未定义我们不会主动使用,我们使用null表示空值
  • 符号(Symbol)
    1. 用来创建唯一标识,调用Symbol()函数,
    2. 向用户隐藏某些值?只有拿到Symbol才能看?
  • 7个原始值是不可变类型,一旦创建了就不能修改了,指的是值,变量可以通过指向新的值来改变内容。

显示类型转换

  • 将其他类型转为:字符串、值和布尔值
  • 转换为字符串
    1. 使用toString()方法,比如let a=10;a=a.toString(),toString()是根据a的值创建一个字符串,对a无影响,需要赋值才改变;注意null和undefined无toString(),所以调用时会报错
    2. 使用String()函数,比如let a=10;a=String(a),此函数对有toString()的直接调用,没有的null和undefined,直接转换为字符串
  • 转换为数值
    1. 使用Number(),针对所有类型,比如let a='10';a=Number(a)
    2. 转换情况,字符串为合法字符串时转换为对应数字,不是合法数字时转换为NaN,空串和纯空格串会转换为0
    3. 布尔值,true -> 1, false->0
    4. null->0,undefined->NaN
    5. 针对字符串的转换方法(不是字符串时会先转成字符串),parseInt(),从左向右读取字符串,直到读取到所有的整数,‘120px’->120,‘a120’->NaN,‘123.5’->123,所以有时会用来取整
    6. parseFloat(),‘123…2s’->123,‘a123.3.2s’->NaN,‘123.3.2s’->123.3
  • 转换为布尔值,
    1. 使用Boolean()函数转换为布尔值
    2. 所有表示空和错误的值会转换为false,有:0,NaN,null,undefined,false和空串,空格串会转换为true

运算符

  1. 算术运算符:±*/,除法不是整除,除以0返回Infinity;**表示幂运算;%取模;
    • JS是弱类型语言,当运算时会通过自动的类型转换来完成运算,比如10-‘5’=5
    • 算数运算,除了字符串的加法,其他会转换为数字后再运算
    • 字符串的加法,任意值和字符串加法运算时,会先将其他值转换为字符串,然后再拼串,依次可以完成字符串的隐式转换,加空串’'操作完成隐式转换,原理是调String()函数,但更方便
  2. 赋值运算符:=,变量在=左边是变量,在=右边是值;??=表示空赋值,a??=100,只有在a为null和undefined时才会赋值
  3. 一元正负,±还可以表示正负,对非数字类型进行正负运算时,会将其转换为数值再运算,一种隐式转换
  4. 自增自减,++a返回新值后+1,a++返回旧值后+1
  5. 逻辑,非!,与&&,或||;
    • 对非布尔取反会先转为布尔后取反,所以可以取两次反来隐式转换类型;
    • &&实质是找false,在找到false后会直接返回false,不会看第二个值,即不会执行符号后面的语句,对非布尔与操作会先转为布尔后运算,然后返回原值,第一个为false则返回false,第一个为true则返回第二这值
    • &&实质是找true,在找到true后会直接返回true,不会看第二个值,即不会执行符号后面的语句,对非布尔与操作会先转为布尔后运算,然后返回原值,第一个为true则返回true,第一个为false则返回第二这值
  6. 逻辑运算符,|(按位或操作,OR,找1),^(按位异或操作,XOR,同0异1),&(按位与操作,NOT,找0),~(按位非操作,NOT,01取反)
  7. 关系运算符,对非数值进行关系运算时,会先转换为数值后比较;两端都是字符串时会逐位的比较字符的Unicode编码,所以对字符串格式的数字进行比较时需要先转换类型;没有python中5<num<10的写法,会出错。
  8. 相等运算符,= =相等与= = =全等,!=不相等与! = =不全等
    • ==比较两个不同的类型时,会将其转换为相同的类型,通常是数值,然后再比较
    • ===不进行类型转换,类型不同是返回false
    • null和undefined进行==比较时返回true,进行===时返回false
    • NaN不和任何值相等,包括自己
    • !=不相等与! = =不全等与= =相等与= = =全等相反
  9. 条件运算符 条件表达式?表达式1:表达式2
  10. 运算符优先级,查表吧,常见的 a++=a–> !>一元±=–a=++a>**>*/%>±>关系>&&>||
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值