【javascript】类型,变量,if语句,调试,循环

❤️ Author: 老九
☕️ 个人博客:老九的CSDN博客
🙏 个人名言:不可控之事 乐观面对
😍 系列专栏:


下面我们会随着Eloquent JavaScript这本书开始编程之路

JS引擎

  • 我们需要JS引擎帮助我们将JS代码翻译成CPU指令来执行,最常见的V8JS引擎(谷歌开发的),SpiderMonkey(最早的),JavaScriptCore(手机端,WebKit中的JS引擎),JS引擎就是在浏览器中的,Node中也有JS引擎
  • webkit浏览器内核由两个部分组成,WebCore和JavaScriptCore,WebCore负责解析HTML,布局,渲染等,JavaScript负责解析,执行Javascript代码

noscript元素

  • 针对早期浏览器不支持JavaScript的问题,需要一个页面优雅降级的处理方案,因此出现了noscript元素,noscript就是一个简单的元素
  • 在这里插入图片描述

基本类型

  • 原始类型:number,string,boolean,null,undefined,symbol,bigint
  • 引用类型:function,array,object

Number

  • 使用这个数据类型,会创建数字对应的二进制状态在内存中,在js中任何一个数字都占用64个比特,8个字节,也就是说是2的64次方,但是第一个比特是正负,然后后面几个比特是记录小数点,所以准确能得出的整数大概是9后面15个0,但是对浮点数的运算是不精确的。
  • 0b开头是2进制,0x开头是16进制,0o是八进制
  • typeof符,返回的是类型。
  • 输出的话用console.log()
  • 在十进制系统中,一些小数(例如 0.1)无法准确地用二进制表示,0.1和0.2在二进制表示中式无限循环的小数,而计算机的浮点数只能用有限的位数表示这些小数,因此会出现精度的缺失。这导致在浮点数运算中,进行类似 0.1 + 0.2 的计算时,结果可能不是精确的 0.3,而是一个非精确的值。解决方法就是使用一些库,比如BigNumber.js或者Decimal.js解决这个问题
  • 如果要显示的类型转换为Number,通过Number()函数进行转换
  • 下面是转换规则
    在这里插入图片描述

String

  • 用双引号也可以,用单引号也可以 ,如果发现了\这个符号就是转义,反引号`在里面可以使用明文回车。
  • 两个字符串拼接就用“+”,或者用concat方法进行字符串拼接

boolean

  • 最终得出两个结果,console.log(3 > 2);,字符串也可以进行比较。大写字母小于小写字母。
  • 字符串和数字进行比较,是把字符串变成数字之后再进行比较;
  • 比较的时候,任何一边有布尔类型都是把布尔类型转成数字
  • NaN和自己都不相同,除了NaN,其他的和自己都是相同的。
  • 自动类型转换,含有NaN的运算,值一定是NaN,NaN就是无意义的值,但NaN = = false的值为false。‘5’ == 5 这个结果是真。null = =undefined是true。
  • 只有‘’”,NaN,0,null,undefined这几个值转成布尔类型都是假。
  • ===这个是精确判断,用来防止自动类型转换,例如 = =不能区分出0和false,或者空字符串和false这类运算,这是因为在比较不同类型的值时,处于判断符号= =两侧的值会先被转化为数字。
  • undefined是当我们声明一个变量,但是没有对其进行初始化时,它默认就是undefined;所以如果我们的变量刚开始什么都没有,我们可以初始化为0,空字符串,null等值

例子

  • %是取最后一位,/是删除最后一位
<script>
x = 2022
console.log( x ) // 输出x
console.log( x * 2 ) // 输出x的两倍
console.log( x ** 2 ) // 输出x的平方
console.log( x * x * x ) // 输出x的三次方
console.log( x ** 5 ) // 输出x的五次平方
console.log( x>50 && x<100 ) // 输出x是否在50到100以内,是输出true,不是输出false
console.log( x % 2 == 1 ) // 输出x是否为奇数,是输出true,不是输出false
console.log( x % 2 == 0 ) // 输出x是否为偶数,是输出true,不是输出false
console.log( x % 10  ) // 输出x的个位数
console.log( (x - x % 10) /10 % 10 ) // 输出x的十位数
console.log( (x - x % 100) /100 % 10) // 输出x的百位数
console.log( x % 100 ) // 输出x百位数以下的部分,对于2021,即输出21,对于2035,即输出35
console.log( Math.abs(x) ) // 输出x的绝对值
console.log( x>200 && x % 3 === 0 && x % 7 != 0 ) // 输出x是否大于200且为3的倍数但不是7的倍数。
console.log( (x - x % 100) / 100 + 1 ) // 输出x做为年份时,所在的世纪,对于2022即输出21,对于1864即输出19
console.log( x % 4 == 0  ) // 输出x做为年份时,当年是否会举办奥运会
console.log( x % 4 === 2 ) // 输出x做为年份时,当年是否会举办世界杯
//与运算优先级高于或运算
console.log( x % 400 === 0 || (x % 4 === 0 && x % 100 != 0) ) // 输出x做为年份时,是否为闰年,是输出true,不是输出false,闰年的定义请自行查询
</script>

变量

  • 程序通过变量记录内部状态,关键字是var,变量声明语句 var x = 5*6;,可以赋值,也可以不赋值。$可以当作变量。

例子

<script>
  var a = 2
  var b = 9
  var c = 1
  //Math.abs(-5) 这个是求绝对值
  //Math.pow(2,1.5)这个求1.5的平方
  var delta = b * b - 4 * a * c
  var sqrt_delte = Math.sqrt(delta)
  var x1 = (-b + sqrt_delte) / (-2 * a)
  var x2 = (-b - sqrt_delte) / (-2 * a)

  console.log(x1)
  console.log(x2)
</script>

在这里插入图片描述

函数

  • alert就是一个函数,alert可以让代码停止。console.log(1,2,3,4,5)可以接受很多个参数,但是alert(1,2),只能接受一个参数,只输出1
  • 这个点就是在console这个方法中取了一个log的属性
  • confirm(‘are you sure to delete’),这个函数是有返回结果的,如果把这个函数的值给一个变量,如果点击确定就返回true,取消就返回false;
  • prompt(‘what is your age’,’18‘),这个是带一个文本框的弹窗,在文本框里输入的东西就作为返回值,后面一个参数是程序在文本框里自动添加的,prompt返回的是字符串,如果想将字符串转成数字,Number(prompt())
  • var x= 3.1415; x.toFixed(2),这个意思是保留小数点有效位数2位,转后成了一个字符串
  • parseInt这个还可以通过进制转换,parseInt(‘11010’,2),这个就是将11010以2进制来理解,转成10进制输出。
  • xxx.toString(2),这个表示把前面xxx的数字以2进制输出
  • Math.floor(1.5) = 1这个就是向下取整
  • Math.ceil(1.001) = 2这个是向上取整
  • Math.round(1.3) = 1这个是四舍五入

在控制台中,如果想编写多行代码,按住shift+enter来进行换行编写

if

  • isNaN:这个判断里面的东西是否不是一个数值类型的值 ,如果它不是一个数值类型,就返回true,如果是一个数值类型,返回false
  • Number.isNaN:这个判断是否是NaN这个值
  • 单纯的NaN代表一个计算错误,他是一个错误的操作所得到的结果,比如字符串和一个数字相乘

例子

<script>
  var a = Number(prompt('请输入a'))
  var b = Number(prompt('请输入b'))
  var c = Number(prompt('请输入c'))

  var delta = b ** 2 - 4 * a * c
  var sqrt_delta = Math.sqrt(delta)

  var x1 = (-b + sqrt_delta) / (2 * a)
  var x2 = (-b + sqrt_delta) / (2 * a)

  if (delta > 0) {
    console.log('x1 = ' + x1)
    console.log('x2 = ' + x2)
  } else if (delta == 0) {
    console.log('x1 = x2 = ' + x1)
  } else {
    console.log('无解')
  }
</script>

调试

  • 在代码中加debugger
    在这里插入图片描述

循环

  • 循环有while和do while和for循环,do while是至少执行一次
  • break是结束整个循环,continue是结束本次循环

猜数字

<script>
  var target = Math.floor(Math.random() * 100)
  do {
    var input = Number(prompt('请猜:'))

    if (input > target) {
      alert('太大了')
    } else if (input < target) {
      alert('太小了')
    } else {
      alert('大聪明')
    }
    
  }while (input !== target)
</script>

typeof

返回object的有可能是对象,有可能是null
返回的都是首字母小写的英文单词
在这里插入图片描述

Number对象

方法:
toString():将数字转成字符串
toFixed():格式化一个数字,保留x位的小数
Number.parseInt(string):将字符串解析成整数
Number.parseFloat(string):将字符串解析成浮点数

Math对象

在这里插入图片描述

————————————————————————
♥♥♥码字不易,大家的支持就是我坚持下去的动力♥♥♥
版权声 明:本文为CSDN博主「亚太地区百大最帅面孔第101名」的原创文章

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

李小浦

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值