初始JavaScript

初识JavaScript

JavaScript入门:

概述:JavaScript是一门脚本语言(web相关),需要浏览器的支持(解析器 谷歌v8引擎),JavaScript是一个弱语言(没有绝对的语法 他的数据类型定义不是由对应的修饰符来定义 而是根据对应的值来定义的(值什么类型变量就是什么类型)),JavaScript里面由三个内容构成,BOM(浏览器对象模型 操作浏览器),DOM(文档对象模型 操作html文档的),ECMAScript(语法规范 es3 (兼容各大主流浏览器)es5(兼容普通版本浏览器) es6 (兼容相关的高版本浏览器))JavaScript书写位置

JavaScript书写位置:内嵌的JavaScript:

<!-- 不常用的写法 -->
<div onclick="alert(123)">点我弹窗</div>

内联的JavaScript 写在script标签中(可以放在任何地方 建议放在html后面)

外联JavaScript 通过script标签的src引入

<!-- 外联 -->
<script src="./hello.js"></script>

JavaScript的代码执行顺序:

从上至下按照对应的文档流

变量定义:

采用var关键词来修饰的(也可以不用 默认以var关键词修饰 变量提升 为全局变量)

var 变量名 = 值
变量名注意事项:
  1. 语义化命名 见名思意(有道词典)

  1. 不能使用关键词和保留字

  1. 驼峰命名法(第一个首字母小写以后的首字母大写)

var userName = 值
  1. 不能以数字开头(构成可以有数字字母下划线以及$符号)

var user_name =值

JavaScript的数据类型(JavaScript的数据由他的值来决定的)

基础数据类型(值类型 不能变的(常量))

数值类型:number

var number = 10

字符串类型string(单引号和双引号表示的都是字符串)

var str = "字符串"
var str = '字符串'

布尔类型boolean(true为真 false为假)

var isTrue = true

未定义类型undefined(当前没有赋值)undefined是null的派生

var a 
console.log(a)
引用数据类型(对象地址分配的 可以变的)

object array function....

JavaScript的注释

注释是用于当前的代码片段的意义,方便之后对开发者进行维护(不会被编译)

单行注释(注释一行)ctrl+/

//我是注释

多行注释(注释多行)shift+alt+a

/**
*这是一个多行注释
*/
typeof 用于判断对应的数据类型(检索对应的数据类型)返回对应的数据类型的英文名(字符串)
typeof 变量 //返回对应的数据类型的英文
var str = "字符串"
var number = 10
var is = true
var un
var isNull = null
console.log(typeof str);//string
console.log(typeof number);//number
console.log(typeof is);//boolean
console.log(typeof un);//undefined
//typeof的typeof是string
console.log(typeof typeof isNull);//null返回的是object null是一个空对象的引用
typeof null返回的是一个object的字符串其他的返回的是对应的类型的字符串
function返回的是function object返回的是object array返回的也是一个object

类型转换

数据类型大的转小的是显式转换 小的转大的是隐式转换(string>number>boolean>undefined)

任意类型转字符串(toString方法调用(undefined不能使用) String方法调用)
var number = 10
var str = number.toString()
var str1 = String(number)
console.log(typeof str)
console.log(typeof str1)
var bl = true
var strBl = bl.toString()
var strBl1 = String(bl)
console.log(typeof strBl);
console.log(typeof strBl1);
//undefined是不能调用toString
var un
// var unStr = un.toString() //报错
var unStr = String(un)
console.log(typeof unStr)
  • 数值转字符串
// 数值转换字符串
varnumber1=10
varstr1=String(number1)
console.log(typeofstr1);
  • 布尔类型转为字符串
//boolean类型转为字符串
varbool=true
varstr2=String(bool)
console.log(typeofstr2);
  • null及undefined转为字符串
//null转为字符串
varnullObj=null
varstr3=String(nullObj)
console.log(typeofstr3);
//undefined转为字符串
varun
varstr4=String(un)
console.log(typeofstr4);
  • toString转换
//利用toString来转换
console.log(typeofnumber1.toString());
console.log(typeofbool.toString());
//null和undefined没有toString方法
// console.log(typeof nullObj.toString());
// console.log(typeof un.toString());
任意类型转number类型
  • 字符串转为数值 无法转换为NaN

  • boolean类型转为数值 true为1 false为0

  • null转为数值 值为0

  • undefined转为数值 值为NaN

使用number方法转换

使用parseInt 或者parseFloat (截取

var str = '123'
var number1 = Number(str)
console.log(number1)
var str1 = '12.1a3a'
var number2 = Number(str1)
// not a number 当出现无法转换的内容的时候 会出现NaN NaN是属于number类型的
console.log(number2)
console.log(typeof number2)
// parseInt 转换为整型 parseFloat 转换浮点类型
//从前面开始截取能够转换的数值 如果前面没有可以转换的数值那么结果就是NaN
var number3 = parseInt(str1)
console.log(number3);
var number4 = parseFloat(str1)
console.log(number4);
//转换布尔类型的时候 true会转成1 false会转成0
var bool = false
var number5 = Number(bool)
console.log(number5);
//und无法转换为number 会出现NaN的值
var und
var number6 = Number(und)
console.log(number6)
//null转为number类型会出现0
var n = null
var number7 = Number(n)
console.log(number7);
console.log(Number('124345'))
console.log(Number(null))//null转为数值为0
console.log(Number(true))//true为1 false为0
//NaN是数值类型
console.log(typeof NaN)//number 
console.log(Number(undefined))//NaN  Not a Number
//任意类型转为数值的时候 无法进行转换就会出现NaN
console.log(Number('abc'))//NaN
console.log(Number('1234abc'))//NaN
//parseInt 转整型 (切割前面的内容) parseFloat(保留小数) 转浮点型
console.log(parseInt('1234.123abc'))
console.log(parseInt('a123.123abc'))//NaN
console.log(parseFloat('a123.123'))//NaN
console.log(parseFloat('1234.123abc'))
注意事项
  • 任意类型转number类型无法转换会出现NaN NaN属于数值类型

  • null转number结果为0 undefined转number结果为NaN

  • isNaN专门判断当前是否是NaN类型出现NaN返回true 没有返回false

转换为boolean类型
  • 数值转为boolean类型 非0及NaN都是true

  • 字符串转为boolean类型 非空字符就是true

  • null和undefined转为boolean类型 都是false

Boolean方法

// 任意类型转boolean
var str = '' //非空则为true
console.log(Boolean(str))
var number = 0 //非0和非NaN则为true
console.log(Boolean(number))
// undefined和null转换为boolean都是false
console.log(Boolean(undefined))
console.log(Boolean(null))
//数值转为boolean类型 非0及NaN都是true
console.log(Boolean(123))
console.log(Boolean(0))
console.log(Boolean(NaN))
//字符串转为boolean类型 非空字符就是true
console.log(Boolean(''))
console.log(Boolean(' '))
console.log(Boolean('123'))
//null和undefined转为boolean类型
console.log(Boolean(null))
注意事项
  • string类型转boolean非空就是true 空字符串为false

  • number类型转boolean 非0和非NaN就是true 0和NaN为false

  • undefined和null转换boolean都是false

number的特殊值

NaN 当你需要转为number类型的时候转换不成功出现的值

无穷大 Infinity

var nan = NaN //表示当前无法转换为number类型
//无穷大 无穷小
var number1 = +Infinity //无穷大
var number2 = -Infinity //无穷小
console.log(typeof number1)

运算符及表达式

算术运算符
  • +特殊的算术运算符

对于有字符串的值进行+ 那么对应的+号做的连接 返回的是字符串

如果没有字符串那么其他的会被转为number类型进行运算(其他类型还是会被转为number)

  • 其他的算术运算 (会将对应的值转为number类型进行运算 如果出现NaN 那么结果就是NaN)

  • ++前置先执行+1操作再执行本行代码 ++后置就是先执行本行代码再执行++

+ - * / % ++ --
//数值的运算
var number1 = 10
var number2 = 20
console.log(number1+number2);//30
console.log(number1-number2);//-10
console.log(number1*number2);//200
console.log(number1/number2);//0.5
//大数取小数得到的是余数 小的数取大的数得到的是本身(小的数)
console.log(number1%number2);//10
console.log(40%2);//0
console.log(40%3);//1
console.log(5%3);//2
console.log(3%5);//3
//+法运算 如果对应的有一个值的类型是字符串 那么得到就是字符串类型 (字符串进行拼接)
console.log('1'+2); //12
console.log('1'+true); //1true
console.log('1'+undefined); //1undefined
console.log('1'+null); //1null
//除此之外的所有都是会转为对应的数值然后进行运算 默认的转换用到的是number方法
console.log(null+true);//1
console.log(undefined+true);//NaN NaN进行任何数值运算得到的数值都是NaN
console.log(undefined*true);//NaN NaN进行任何数值运算得到的数值都是NaN
console.log(null*true);//0
console.log('123'/1);
console.log('123a'/1);
console.log(1+true)//2
console.log(1+true+null)//2
console.log(1+true+undefined)//NaN
//出现字符串做的为连接
console.log(1+2+3+undefined+'undefined'+true+10)//NaNundefinedtrue10
console.log(1+''+2) //12
console.log(1*1+2+3+(3-4))//5
console.log(1*null)
console.log(null-undefined+10*100+(1000/10))//NaN
//取余 取模  小数取大数得到本身 大数取小数得余数
console.log(3%4)//3
console.log(4%3)//1
console.log(10%2+10)//10
//++的意思在原本的基础上自增1 
var a = 10
console.log(++a)//11
//++ 前置和后置的区别
// ++前置先执行+1操作再执行本行代码 ++后置就是先执行本行代码再执行++
console.log(a++)//11
console.log(a)//12
console.log(12+13+(a++)-(a--)+(++a))//37 12+13+12-13+13
//执行顺序
// 先算括号里面 再执行方法 再算*/ % 再算+- 
console.log(a*12+undefined-(10+5)%(5).toString())//NaN
console.log(a.toString()+undefined-(9*9)%10)//NaN
比较运算符 (返回boolean类型)
  • NaN != NaN

  • 对象之间不能直接比对(比对的是地址值)

> < == >= <= != ===
console.log(1>2)//false
console.log(1>=1)//true
console.log(1 && 1>1 || 2>2)//false
//== 和 ===  ==是表示值相等 ===表示是在==的基础上类型也要相等
console.log(1 == '1')//true
console.log(1 === '1')//false
//NaN==NaN false NaN!=NaN true 
console.log(NaN==NaN)//false
console.log(NaN!=NaN)//true
//0.1+0.2 != 0.3 二进制解析 二进制运算(减法快 )
console.log(0.1 == 0.1)
console.log(0.2 == 0.2)
console.log(0.1+0.2 == 0.3)//false
位运算符(解析成二进制进行运算)
& ^ | < >
位移运算符(二进制上进行位移)
>> <<
// 位移运算
// 2 10
console.log(2>>2)//0
//左移 2 10  1000 (快速把2变成8)
console.log(2<<2)
++和--

++ 自增

var number = 10
number++ //number=number+1
console.log(number)//11

--自减

var number = 10
number-- //number=number-1
console.log(number)//9

++前置和后置的区别

  • 前置先执行 先++再执行其他的代码

  • 后置后执行 先走了对应的其他代码以后再执行++操作

var number = 10
number++ //number=number+1
console.log(number) //11
number-- //number=number-1
console.log(number) //10
//++前置和后置 --前置和后置
//前置先执行 先+再执行其他的代码
//后置后执行 先走了对应的其他代码以后再执行++操作
console.log(number++);//10
console.log(number);//11
console.log(++number);//12
console.log(--number);//11
console.log(number--);//11
console.log(number);//10

注意事项

  1. 取余的规则 大的数值取余小的数值得到是余数 小的数值取余大的数值得到的是他本身

  1. 字符串进行加法运算会进行字符串的拼接 得到的是字符串

  1. 其他的任意操作都会先转为对应的number类型再进行运算

  1. NaN做任意运算返回的结果都是NaN

逻辑运算符
  • &&都为真就是真(取得最后一个真) 只要有一个是假得就是假(第一个假)

  • ||有一个是真就是真(取第一个真) 如果全部为假就是假(最后一个假)

  • ! 取反

&& || !
// && 与 俩个都是true 则返回true(最后一个true) 有一个是false就返回false (第一个false)
console.log(true && 1)//1
console.log(0 && false)//0
console.log('0' && undefined && NaN)//undefined
console.log('undefined' && 10 && 20)//20
// || 或 有个true直接取第一个true 如果都是false取最后一个false
console.log(true || 1)//true
console.log(0 || false)//false
console.log('0' || undefined || NaN)//'0'
console.log('undefined' || 10 || 20)//'undefined'
// ! 非 取反操作 将对应的真的变假的 假的变真的 返回的结果是一个boolean类型
console.log(!1);//false
条件运算符
> < = >= <= == === != !==

返回的是一个boolean类型的值 (true或者false)

var a = 10
var b = 20
console.log(a>b);//false
console.log(a<b);//true
//不同类型的比较
// 字符串和对应的数值比较 比较的过程会进行数值类型的转换 NaN 出现NaN结果就是false
var str = 'abc'
var str1 = '123'
console.log(str>a);//false 出现了NaN
console.log(str1>a);//true
//其他的比较也是同样的
var bool = true
console.log(bool<2);//true
console.log(bool>null);//true
console.log(bool>undefined);//false undefined会转换NaN
//== 判断俩个值是否相等 进行转换操作
console.log('123'==123);//true 字符串的数值和普通数值进行比较他是返回true
console.log(true==1);//true
console.log(NaN==NaN);//false
console.log(undefined==null);//true
console.log(NaN!=NaN);//true
//=== 恒等 全等俩个类型以及值完全相等 基于==
console.log('123'===123);//false
console.log(NaN===NaN);//false
console.log(undefined===null);//false

扩展内容

进制转换

常用进制 二进制 四进制 八进制 十进制 十六进制

进制转换 从其他进制转为10进制 乘进制法

11111 转为 10进制

1*2的0次方 + 1*2的1次方 ....
1+2+4+8+16 = 31
将10进制转换为其他进制 除进制取余法

100 转为 2进制

除2取余法
将十进制转为其他进制得到字符串 toString
将其他进制转为10进制得到数值 parseInt
var n = 100
//转为2进制 toString方法 传入对应的转换的进制
var str = n.toString(16)
console.log(str)
//将其他进制转为10进制 parseInt 传入的其他进制内容 自己的进制 转换的进制
console.log(parseInt(str,16,10))
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值