变量

声明:let 变量名
声明时并且初始化
let a=1;
更新
a=2;

常量 const

声明时必须初始化,且不能更新

变量标识符

1、字母,数字,下划线,$(不能使用数字开头)
2、严格区分大小写
3、不能使用关键字保留字

命名方案

1、驼峰式
2、帕斯卡(大驼峰) 首字母大写
3、匈牙利 oBtn,_sex,_salary
推荐使用驼峰式;
常量推荐大写命名;

变量的类型与类型转换

原始类型

1、字符串

  1. let a='a';
  2. console.log(a,typeof a);

2、数值

  1. let b=1;
  2. console.log(b,typeof b);

3、布尔

  1. let c=false;
  2. console.log(c,typeof c);

4、underfined

  1. let d;
  2. console.log(d,typeof d);

5、null

  1. let e=null;
  2. console.log(e,typeof e);

引用类型:数组,对象,函数

1、数组 []

  1. let arr = [1, 2, 3];
  2. console.log(arr, Array.isArray(arr));

判断数组 Array.isArray(arr);
2、对象

  1. let objs = {
  2. id: 1,
  3. name: '手机',
  4. price: 9999
  5. }
  6. console.log(objs, objs instanceof Object);

判断对象 objs instanceof Object;
3、函数
声明函数
function 名(){}
建议命名方式 动词+名称 比如getName

  1. function show() {};
  2. console.log(typeof show);

函数是特定的对象实例。
判断函数 typeof ;返回function;

运算符

通常只有相同类型的数组放在一起运算,它的结果才有意义!

+:字符串之间表示连接,此时触发自动类型转换(隐式转换)

  1. console.log(100 + '100');

==:非严格匹配,只检查值不检查类型

  1. console.log(100 == '100');

===:严格匹配,必须值与类型都匹配时才为true;

  1. console.log(100 === '100');

函数提升

声明的函数不管写在任何地方,声明自动提升到最高。
使用匿名函数、函数表达式可以禁止函数提升

函数重写

函数可以被重写,只要将函数作为值赋给常量可以禁止重写

函数的参数和返回值

函数参数多的时候,可以使用归内参数,简化函数的参数声明

  1. let sum = function(...arg) {
  2. console.log(arg);
  3. }
  4. sum(1, 2, 3, 4, 5, 6, 7, 8)

函数都是单值返回,如果想要返回多个值,将结果封装到数据或者对象中

高阶函数

1、回调函数
将函数作为另一个函数的参数
2、偏函数
简化声明

  1. let summ = function(a, b) {
  2. return function(c, d) {
  3. return a + b + c + d;
  4. }
  5. }
  6. let f1 = summ(1, 2);
  7. console.log(f1(3, 4));


3、柯里化
简化调用

  1. let summ = function(a) {
  2. return function(b) {
  3. return function(c) {
  4. return function(d) {
  5. return a + b + c + d;
  6. }
  7. }
  8. }
  9. }
  10. let res = summ(1)(2)(3)(4);
  11. console.log(res);

4、纯函数
完全独立于调用上下文,返回值只能受到传入的参数影响

5、箭头函数

  1. sum =(a,b)=>{
  2. return a+b;
  3. }

使用在匿名函数中
如果函数体只有一条语句,可以不写return

  1. sum =(a,b)=> a+b;

如果只有一个参数,可以更简化

  1. let getName = name => name;
  2. console.log(getName('abc'));


如果没有参数,小括号不能省略

  1. let str = () => console.log('abc');
  2. str()


箭头函数没有原型属性,不能当构造函数使用
箭头函数中的this始终与它的上下文绑定

作用域与闭包

js中有三种作用域
1、全局作用域
声明在函数之外的
2、函数
声明在函数里面的,函数里面的变量叫做局部变量
3、块
{
声明在大括号内部的
}
4、闭包
自由变量:既不是参数变量又不是私有变量,存在于函数调用上下文中变量;
闭包:能够访问自由变量的函数,理论上上讲任何函数都是闭包;

  1. // 使用闭包访问私有变量
  2. function fun() {
  3. let n = 100;
  4. return function() {
  5. return n;
  6. }
  7. }
  8. console.log(fun()());

立即执行函数IIFE

声明完成直接调用

  1. (function(a,b){})(a,b)

可以模拟块作用域

更多相关文章

  1. Windows系统中python的保姆级安装教程
  2. js的变量与常量、常用数据
  3. 我的第32个代码
  4. MGR用哪个版本?5.7 vs 8.0
  5. C语言字符串相关函数使用示例 strtok_r strstr strtok atoi
  6. TensorFlow-手写数字识别(二)
  7. ACCESS中Dlookup函数使用
  8. Linux makefile使用基础
  9. 记一次Linux内核中socket源码走读

随机推荐

  1. notification
  2. android studio 导入工程
  3. Android studio 下载地址
  4. Android Calander Event
  5. android的布局水平与垂直显示
  6. Android Choreographer 初始化
  7. android:password is deprecated: Use in
  8. 处理启动页白屏问题
  9. Android自带图标库
  10. Android 基本UI控件