JS笔记(1/8)之基础语法

1. 基本语法

  1. 执行单位为行(line),每一行为一个语句,用分号隔开
  2. 表达式目的是返回一个值,不需要加分号
  3. 变量名区分大小写
  4. 声明一个变量用var语句
  5. 没有赋值的变量值为underfined
  6. 不用var创建变量,语句也有效,但是容易创建全局变量,不利于表达意图

js是一个动态类型语言,变量可以随时更改类型
相对比,java就是静态语言,数据类型需要提前指定,且不可变,否则报错
var a = 1; a = 'hello';

  1. 变量第二次赋值时,不再需要var命令;覆盖掉之前的值
  2. 变量提升:JS引擎先解析代码,把所有被声明的变量提到代码头部,然后再一行一行运行(变量提升hoisting),函数名好像也提升?

实际操作中,理论上可以先写语句再定义变量,但一般都会提前定义变量

  1. 标识符大小写敏感
  2. 标识符规则:第一个字符,unicode字母(包括中文汉字,但不推荐),美元符号,下划线;第二个字符还可以使用数字0-9

var 临时变量 = 1;

  1. 注释:两种注释

// 这是单行注释
/*
这是
多行
注释
*/
注:JS还兼容html的注释 ,也可以作为合法单行注释

  1. 大括号{},将多个相关的语句组合在一起,称为“区块”(block);但对Var命令来说,JS的区块不构成单独的作用域(scope)。JS的区块也就用来构成一些复杂的语法结构,例如循环,函数等。
  2. 赋值表达式(=)、严格相等运算符(=== ) 和相等运算符(==);为避免写错这三种运算符,在使用相等时(优先严格相等运算符)将常量写在运算符左边,这样如果写成赋值表达式,会报错
  3. if;if else;switch结构
switch (fruit) {
   
  case "banana":
    // ...
    break;
  case "apple":
    // ...
    break;
  default:
    // 所有case都不符合,就执行Default
}
  1. switch举例
switch (1 + 3) {
   
  case 2 + 2:
    f();
    break;
  default:
    neverHappens();
    //需要注意的是,switch语句后面的表达式,与case语句后面的表示式比较运行结果时,采用的是严格相等运算符(===),而不是相等运算符(==),这意味着比较时不会发生类型转换。
}
  1. 三元运算符(条件) ? 表达式1 : 表达式2 ;如果条件为TURE,执行表达式1;否则执行2
  2. while;for;循环
  3. break语句:用于跳出代码块或循环。
  4. continue语句:用于立即终止本轮循环,返回循环结构的头部,开始下一轮循环。
  5. 标签的使用:格式;通常和break语句和continue语句配合使用,跳出特定的循环
label:
  语句
top:
  for (var i = 0; i < 3; i++){
   
    for (var j = 0; j < 3; j++){
   
      if (i === 1 && j === 1) break top;
      console.log('i=' + i + ', j=' + j);
    }
  }
// i=0, j=0
// i=0, j=1
// i=0, j=2
// i=1, j=0
top:
  for (var i = 0; i < 3; i++){
   
    for (var j = 0; j < 3; j++){
   
      if (i === 1 && j === 1) continue top;
      console.log('i=' + i + ', j=' + j);
    }
  }
// i=0, j=0
// i=0, j=1
// i=0, j=2
// i=1, j=0
// i=2, j=0
// i=2, j=1
// i=2, j=2
  1. 关键字总结
    关键词 描述
    break 终止 switch 或循环。
    continue 跳出循环并在顶端开始。
    debugger 停止执行 JavaScript,并调用调试函数(如果可用)。
    do … while 执行语句块,并在条件为真时重复代码块。
    for 标记需被执行的语句块,只要条件为真。
    function 声明函数。
    if … else 标记需被执行的语句块,根据某个条件。
    return 退出函数。
    switch 标记需被执行的语句块,根据不同的情况。
    try … catch 对语句块实现错误处理。
    var 声明变量。
    name:
  2. 三种变量命名习惯

连字符:first-name(JS中不能用,为减法预留)
下划线:first_name(不推荐)
驼峰大小写(Camel Case):FirstName,LastName.(推荐JS使用)

2. 数据类型

2.1 简介

  1. 7种数据类型,数值(number);字符串(string);布尔值(boolean);underfined(未定义);null(空);object(各种值组成的集合);Symbol(ES6新增,不考虑);

数组(array),函数,以及狭义的对象都包含在object中

  1. number,string,boolean一般称为原始类型(primitive type)
  2. 对象则称为合成类型(complex type),因为往往是多个原始类型的值的合成。可以分为三个子类型

狭义的对象(object)
数组(array)
函数(function)

  1. 我们一般说的就是狭义的对象;函数其实是处理数据的方法,JS把他作为一种数据类型,可以赋值给变量,使得编程更加灵活,也奠定了函数式编程的基础
  2. 三种确定某一个值的数据类型的办法

typeof运算符
instanceof运算符
Object.prototype.toString方法

  1. typeof的使用
typeof 123 // "number"
typeof '123' // "string"
typeof false // "boolean"
function f() {
   }
typeof f
// "function"

v
// ReferenceError: v is not defined
typeof v
// "undefined"

typeof window // "object"
typeof {
   } // "object",
typeof [] // "object",数组是特殊的对象

typeof null // "object",历史原因,为了兼容之前代码,故未更改

//实际编程中,这个特点多用在判断语句中

2.2 null,underfined和布尔值

  1. null表示空值
  2. underfined表示未定义
  3. 布尔值往往用于程序流程的控制
    if ([]) {
         
      console.log('true');
    }
    // true
    
    if ({
         }) {
         
      console.log('true');
    }
    // true
    
  4. 下列运算会返回布尔值

前置逻辑运算符: ! (Not)
相等运算符:=== ,! = =,==,!=
比较运算符:>,>=,<,<=

  1. 如果JS预期某个位置应该是布尔值,会将该位置上现有的值自动转为布尔值。转换规则是除了下面6个值转为 false,其他都转为 true 。

undefined
null
false
0
NaN
""或’’(空字符串)

2.3数值

  1. JS内部,所有数字都是以64位浮点数形式存储,即使整数也是如此
  2. 对于只能整数才能完成的运算,JS会把64位浮点数转成32位整数
  3. 数值精度

国际标准IEEE 754,JS浮点数位64个二进制位,从最左边开始
第一位符号位,0表示正数,1表示负数
第2-12位(共11位):指数部分,决定数值的大小
第13-64位(共52位):小数部分(有效数字)决定了数值的精度
具体: (-1)^符号位 * 1.xx...xx * 2^指数部分

  1. 按标准,有效数字这时总是1.xx…xx的形式,其中xx…xx的部分保存在64位浮点数之中,最长可能为52位。因此,JavaScript
    提供的有效数字最长为53个二进制位。
    这意味着,绝对值小于2的53次方的整数,即-253到 253,都可以精确表示。再大的数,精度无法保证
  2. 数值范围

指数部分最大为2047(2的11次方-1),分出一半负数,则JS能够表示的数值范围是21024到2-1023(开区间),超出这个范围的数无法表示。
如果一个数大于21024,那么就会发生“正向溢出”,这时返回Infinity
如果一个数小于等于2的-1075次方(指数部分最小值-1023,再加上小数部分的52位),那么就会发生为“负向溢出”,即 JavaScript 无法表示这么小的数,这时会直接返回0。
JavaScript 提供Number对象的MAX_VALUE和MIN_VALUE属性,返回可以表示的具体的最大值和最小值。

  1. 数值的表示法

字面形式直接表示
科学计数法,利用e或E来表示数值的指数部分
小数点前数字多于21位,小数点后的零多于5个,会直接转变为科学计数法

  1. 数值的进制(整数有4种)

十进制:没有前导0的数值。
八进制:有前缀0o或0O的数值,或者有前导0、且只用到0-7的八个阿拉伯数字的数值。
十六进制:有前缀0x或0X的数值。
二进制:有前缀0b或0B的数值。

  1. 默认情况,JS会把其他进制转为十进制; 通常0前导,认为为八进制,但是如果前导0后边有数字8和9,则该数值被视为十进制.
0888 // 888(十进制)
0777 // 511(八进制)
  1. 特殊数值

+0和-0在做分母时,返回的值会有不同;除以正零得到+Infinity,除以负零得到-Infinity
Infinity:无穷
NaN,是JS的特殊值,表示非数字,主要出现在将字符串解析成数字出错的场合。不是独立的数据类型,仍然是number类型中的一个特殊值。使用typeof运算符可以验证。
运算规则

  1. NaN不等于任何值,包括它本身
  2. 布尔运算中,NaN当作false
  3. NaN与任何数(包括它自己的运算,得到的都是NaN)
  1. 与数值相关的全局方法
    parseInt:方法用于将字符串转为整数
parseInt('123') // 123
parseInt('   81') // 81
parseInt(1.23) // 1
// 等同于
parseInt('1.23') // 1
parseInt('8a') // 8
parseInt('12**') // 12
parseInt('12.34') // 12
parseInt(
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值