ES6+新特性

本文详细介绍了ES6中的let和const关键字,包括它们的特性如块级作用域、不可重复声明及常量对象的特殊性。此外,还探讨了字符串的扩展,如模板字符串和实例方法。最后,提到了函数扩展,如默认参数、rest参数以及箭头函数的使用和限制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

let、const:声明变量的两个关键字

// 声明变量
let a ;
let b,d;
let f =11;
// 1、变量不能重复声明

// 2、块级作用域
{
let dd = 34; 
}

// 3、不存在变量提升

// 4、不影响作用域链
{
	let test = 'tset';
  function a (){
  	conslog.log(test)
  }
  a();
  // 正常执行,正常输出
}

let 与const的特点:
不存在变量提升
存在暂时性死区(不能被提前调用)
不允许重复声明
形成了块级作用域
const :声明为常量。不能被修改的量,
但是声明为对象的时候,可以修改对象中的变量中属性值。
1、一定要赋初始值
2、一般常量使用为大写
3、常量的值不能修改
4、块级作用域
5、对于数组和对象中的元素进行修改,不算对常量的修改,不会报错。
const的本质:const的本质是变量指向的那个内存地址多保存的数据是不变的,对于简单数据类型来说的话。值就保存在变量指向的那个地址,因此等同于常量,但对于符合类型的数据,主要是对象和数组时,变量指向的是内存地址。至于指向它的数据结构能不能控制就不好说了
字符串:
1、直接可以使用字符的Unicode编码进行表示
2、字符串可以直接遍历
3、允许直接输入字符串的转义形式
4、模板字符串:
是允许嵌入表达式的字符串,可以在其中使用多行字符串和字符串插功能。其主要是使用反引号来代替普通字符串中的双引号和单引号,其中的特定语法(${expression})占位符,其中可以写一些表达式。

1、换行
console.log(`string text line 1
string text line 2`);
2、插入表达式
var a = 5;
var b = 10;
console.log(`Fifteen is ${a + b} and
not ${2 * a + b}.`);
// "Fifteen is 15 and
// not 20."
3、嵌套模板
const classes = `header ${ isLargeScreen() ? '' :
 `icon-${item.isCollapsed ? 'expander' : 'collapser'}` }`;

字符串实例方法:
repeat():方法返回一个新字符串,表示将字符串重复n次
padStrat():用于头部补全
padEnd():用于尾部补全
trimStart():消除字符串头部空格
trimEnd():消除字符串尾部空格
matchAll():返回一个正则表达式在当前字符串中的所有匹配
replaceAll():返回一个新字符串,不改变原有的字符串,将替换所寻找到的字符串

函数扩展:
1、设置函数中参数的默认值

function log(x, y = 'World') {
  console.log(x, y);
}

log('Hello') // Hello World
log('Hello', 'China') // Hello China
log('Hello', '') // Hello

2、rest参数:
引入的rest参数,来代替arguments参数,形式为(…变量名),用于获取函数的多余参数。

// rest 参数之后不能再有其他参数(即只能是最后一个参数),否则会报错。
function add(...values) {
  let sum = 0;

  for (var val of values) {
    sum += val;
  }

  return sum;
}
add(2, 5, 3) // 10

3、严格模式的用处(暂时不是很理解,先放过)。
4、name,函数的name属性,直接返回该函数的函数名。

function foo() {}
foo.name // "foo"
// 注意:Function构造函数返回的函数实例,name属性的值为anonymous。
(new Function).name // "anonymous"
// 注意bind返回的函数,name属性值会加上bound前缀。
function foo() {};
foo.bind({}).name // "bound foo"

(function(){}).bind({}).name // "bound "

5、箭头函数 :ES6 允许使用“箭头”(=>)定义函数。

var f = v => v;
// 等同于
var f = function (v) {
  return v;
};

箭头函数没有自己的this对象(继承的是上个作用域的this)(在this的那一点讲过)
不可以作为构造函数,不能进行new使用
不可以使用arguments对象,该对象在函数体内不存在,可以使用rest参数代替
不可以使用yield命令,因此箭头函数不能作为Generator函数

//  1、箭头函数的this的值是静态的,指向上一个作用域。
function getName1 (){
  consoloe.log(this.name);
}
let getName2 =function () =>{
  consoloe.log(this.name);
}

Window.name = 'WindowName '
let obj = {
  naem = 'objName'
}
//直接调用
getName1();
getName2();

// call的调用
getName1.call(obj);
getName2.call(obj);

// 查看输出,这个输出能证明的是this的指向
//2、不能做为构造函数实例化对象
let Person = (name,age) =>{
  this.name =name;
  this.age = age;
}
let stu = new Person('小张',10)
//3、不能使用argument变量
let fn = () => {
  console.log(argument);
}
fn(1,2,3)
//4、箭头函数的简写
  //a、省略小括号:有且只有一个形参的时候
let add =  n => {
  return n + n;
}

  //b、省略花括号,当代码体只有一条语句的时候,此时return必须省略
  //而且语句的执行结构就是函数的返回值。

let pow = n => n * n;
console.log(pow(3))

箭头函数的使用场景:

其中一种函数使用方式:,
 需求:从数组中返回偶数的元素

cost arr = [1,2,3,4,5,6,7,7]

const result = arr.filter(function(item){
    if(item % 2 === 0 ) {
      return true;
    } else {
      return false;
    }
});
//使用箭头函数  与上面是同一个效果
const result = arr.filter(item => item % 2 ===0);


//箭头函数适合与this的无关的回调,定时器,数组的方法回调。
//箭头函数不适合与this有关的回调,事件回调,对象的方法等。(在某些情况下也是可以实现的)

等等,后序还有等待补充

标题“51单片机通过MPU6050-DMP获取姿态角例程”解析 “51单片机通过MPU6050-DMP获取姿态角例程”是一个基于51系列单片机(一种常见的8位微控制器)的程序示例,用于读取MPU6050传感器的数据,并通过其内置的数字运动处理器(DMP)计算设备的姿态角(如倾斜角度、旋转角度等)。MPU6050是一款集成三轴加速度计和三轴陀螺仪的六自由度传感器,广泛应用于运动控制和姿态检测领域。该例程利用MPU6050的DMP功能,由DMP处理复杂的运动学算法,例如姿态融合,将加速度计和陀螺仪的数据进行整合,从而提供稳定且实时的姿态估计,减轻主控MCU的计算负担。最终,姿态角数据通过LCD1602显示屏以字符形式可视化展示,为用户提供直观的反馈。 从标签“51单片机 6050”可知,该项目主要涉及51单片机和MPU6050传感器这两个关键硬件组件。51单片机基于8051内核,因编程简单、成本低而被广泛应用;MPU6050作为惯性测量单元(IMU),可测量设备的线性和角速度。文件名“51-DMP-NET”可能表示这是一个与51单片机及DMP相关的网络资源或代码库,其中可能包含C语言等适合51单片机的编程语言的源代码、配置文件、用户手册、示例程序,以及可能的调试工具或IDE项目文件。 实现该项目需以下步骤:首先是硬件连接,将51单片机与MPU6050通过I2C接口正确连接,同时将LCD1602连接到51单片机的串行数据线和控制线上;接着是初始化设置,配置51单片机的I/O端口,初始化I2C通信协议,设置MPU6050的工作模式和数据输出速率;然后是DMP配置,启用MPU6050的DMP功能,加载预编译的DMP固件,并设置DMP输出数据的中断;之后是数据读取,通过中断服务程序从DMP接收姿态角数据,数据通常以四元数或欧拉角形式呈现;再接着是数据显示,将姿态角数据转换为可读的度数格
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值