美文网首页
javascirpt基础语法解读

javascirpt基础语法解读

作者: 做最棒的 | 来源:发表于2018-08-23 14:56 被阅读0次
注释 单行 多行
严格模式

use strict
https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Strict_mode
http://www.runoob.com/js/js-strict.html

数据类型 6种类型

5简单类型 Undefined Null Boolean Number String
1复杂类型 Object 本质上有一组无序的名值对组成

typeof操作符

1、undefined null boolean number string object function
实例

let abc = [];
const add = (a,b)=>a+b;
console.log('typeof abc=',typeof abc);
console.log('typeof 98=',typeof 98);
console.log('typeof 98.8',typeof 98.8);
console.log('typeof null=',typeof null);
console.log('typeof ddd=',typeof ddd);
console.log('typeof {}=',typeof {});
console.log('typeof add = ',typeof add);

2、异常现象 array null
http://www.cnblogs.com/xiaoheimiaoer/p/4572558.html
实例

const isArray = abc && typeof abc === 'object' && abc.constructor === Array;
console.log(abc.constructor);
console.log(isArray);
console.log('Array.isArray ',Array.isArray(abc));
console.log(abc instanceof Array);
const aaa = null;
console.log('aaa === null ',aaa === null);
## null undefined
undefined 派生自null值,es5相等
console.log(undefined == null);
console.log(undefined === null);

Boolean

javascript 假值

0         Number
NaN       Number
''        String 
null      object
undefined Undefined
false     Boolean

Number

1、浮动点数
注意:1)不要测试某个特定的浮点数

console.log(0.1);
console.log(0.2);
console.log(0.1+0.2);
console.log(0.1+0.2 === 0.3);

2、数值范围
自己动手测试数值范围,无穷大,无穷小
3、NaN
非数值(not a number) 是一个特殊的数值。
判断是否是非数值 isNaN 函数
4、数值转换
1)Number()
参数类型,任何类型
自己看,规则比较多。
2)parseInt()
第一个参数类型是string,
第二个参数 2,8,10,16

  1. parseFloat()
    参数类型是string
    5)toFixed() toExponential() e表示法

String 自己看

Object 后面有更详细的介绍

操作符

== === Object.is()
<img src="http://newimg88.b0.upaiyun.com/newimg88/2017/08/pCyqkLc.png" />

第五章

函数

理解:
1、函数就是对象
对象:“名/值“对的集合并拥有一个连接到原型对象的隐藏连接
对象字面量产生的对象连接到Object.prototype.
2、函数对象连接到Function.prototype(该原型对象本身连接到Object.prototype).
3、每个函数在创建时会附加连个隐藏属性:函数的上下文和实现函数行为的代码。
4、函数总会有一个返回值,如果没有返回值,返回undefined
5、参数 arguments 创建免费赠送
不是数组,它是一个“类似数组(array-like)”
拥有length属性,但没有任何数组方法
6、调用
1)方法调用

let value = 4;
const myObj = {
 value:0,
 add:function(a){
         this.value += typeof a === 'number' ? a :1;
     }
 }
myObj.add(2);
console.log(myObj.value);

方法可以使用this访问自己所属的对象

2)函数调用模式

function add(a,b) {
  return a+b;
}
console.log(add(3,4));

3)构造器调用模式

var Quo = function (string) {
    this.state = string;
}

Quo.prototype.get_state = function() {
    return this.state;
}
var myQuo = new Quo("ok");

console.log(myQuo.get_state())

4)Apply,call调用模式
javascript 函数式面向对象编程语言

 var Quo = function () {};
Quo.prototype.get_state = function() {
    return this.state;
}
var states = {
    state:'ok'
};
const state = Quo.prototype.get_state.apply(states);
console.log(state);

call 方法从犀牛书中寻找
7、函数没有重载

日期

对象的理解

1、对象字面量
属性名可以用引号括住,也可以不括住,如果是关键词,必须括住。

  var obj = {
    id:1,
  }
  var obj2 = {
    "int":1
  }

2、对象字面量的检索
1).表示法
2)[]里面是属性名的字符串
例如

console.log(Math.max(2,3,1,19,2));
console.log(Math["max"](3,1,33,22));
 const arr = ['id','name','sex'];
     const obj = {};
     for(let v of arr){
        obj[v] = v;
     }
     console.log(obj);

3)检索不存在的值 返回 undefined

      obj['liang']
      
      const a = obj['liang'] || 'liang';
  1. 从对象属性是undefined里面继续引用会怎么样?

3、更新

   const obj = {};
   obj["liang"]='liang';
   obj.liang='liang';

4、对象的浅复制

    1) for in
    2) Object.assign

实例:

    const arr = ['id','name','sex'];
    const obj = {};
    for(let v of arr){
       obj[v] = v;
    }
    console.log(obj);
    const obj2 =  Object.assign(obj);
    obj['clas']='二年级';
    console.log(obj2);
  1. {...obj}
    5、删除
    delete obj.liang
    6、keys() , values() ,entries(), 其它更多方法
const obj = { foo: 'bar', baz: 42 };
const map = new Map(Object.entries(obj));
let obj = { one: 1, two: 2 };
for (let [k, v] of Object.entries(obj)) {
console.log(
    `${JSON.stringify(k)}: ${JSON.stringify(v)}`
  );
}

数组 Array

1、数组检测

Array.isarray()
instaceof

2、delete 删除
提问?
3、数组的长度
每个数组都有长度 0<=lenth<4294967295

const arr = [];  // length=0
const arr[1000]=0; // length=1001

4、常用方法
1)concat
例如:

const a =['a','b','c'];
const b =['d','e','f'];
cosnt c = a.concat(b,'m','n');

能想到什么?

其它?

2)join

   a.join(',');
   const m = ['a','b','c',['d','e','f']];
   m.join(',');
  1. 栈方法 后进先出
const a =['a','b','c'];
a.push('e'); // 返回什么?
a.pop();     // 返回什么?

4)队列方法 后进后出

a.push('e');
a.shift(); // 返回什么

5)unshift

6)sort reverse

const arr = [1,12,21,3,6,10];
arr.sort();
console.log(arr);
arr.sort((a,b)=>a-b);
console.log(arr);

7)splice
删除 插入 替换

var colors = ['green','yellow','blue'];
var remove colors.splice(0,1);
colors.splice(1,0,'white','red');
colors.splice(1,1,'gray');

8)slice
colors.slice(-2,-1);
9)迭代方法
every 返回 true or false
some 任一项返回true,返回true,否则false
forEach 没有返回值
map 返回调用结果组成的数组
map 实例

const arr = [1,12,21,3,6,10];
const abc = arr.map(i=>i+1);
arr.push(33333);
console.log(arr);
console.log(abc);

10)reduce
参数
1、要返回的值
2、数组当前遍历的值
3、当前数组下标
4、当前数组

实例:

const list = [{
                    number: 123, // 辅导班number
                    bizNumber: '0SXADASDA1', // 辅导班bizNumber
                    assistantNumber: 12, // 辅导老师number   
                    assistantName: '孙宁', // 辅 导老师name 
                }, {
                    number: 124, // 辅导班number
                    bizNumber: '0SXADASDA2', // 辅导班bizNumber
                    assistantNumber: 21, // 辅导老师number 
                    assistantName: '晨晨', // 辅 导老师name 
                }, {
                    number: 125, // 辅导班number
                    bizNumber: '0SXADASDA3', // 辅导班bizNumber
                    assistantNumber: 2, // 辅导老师number  
                    assistantName: '张三', // 辅 导老师name  
                }, {
                    number: 126, // 辅导班number
                    bizNumber: '0SXADASDA4', // 辅导班bizNumber
                    assistantNumber: 3, // 辅导老师number  
                    assistantName: '李四', // 辅 导老师name  
                }, {
                    number: 127, // 辅导班number
                    bizNumber: '0SXADASDA5', // 辅导班bizNumber
                    assistantNumber: 3, // 辅导老师number   
                    assistantName: '李四', // 辅 导老师name  
                }, {
                    number: 128, // 辅导班number
                    bizNumber: '0SXADASDA9', // 辅导班bizNumber
                    assistantNumber: 2, // 辅导老师number   
                    assistantName: '张三', // 辅 导老师name   
                }];
       const noRepeatSubClazz = (subClazzArr) => {
        if (subClazzArr.length === 0) {
            return [];
        }
        return subClazzArr.reduce((calc, item, index) => {
            if (index > 0) {
                const b = calc.some(c => c.assistantNumber === item.assistantNumber);
                if (!b) {
                    calc.push(item);
                }
            } else {
                calc.push(item);
            }
            return calc;
        }, []);
    }
const arr = noRepeatSubClazz(list);
console.log(arr);

11)es6的其它方法

日期

时间戳

console.log(Date.now()); 
console.log(+new Date());

扩展 moment
http://momentjs.cn/docs/

字符串

1、charAt
2、concat
3、substr
4、indexof >0 存在查找的字符,和所在的位置
5、lastindexof
6、trim
7、toLocaleUpperCase toLowerCase
8、可以用正则表

text.match
text.search
text.replace

9、replace
10、localeComare

内置对象

Global对象

Global方法

encodeURI
encodeURIComponent
decodeURI
decodeURIComponet
console.log(encodeURI('https://www.bcdef.com/ddd 张三'));
console.log(encodeURIComponent('https://www.bcdef.com/ddd 张三'));
console.log(decodeURI('https://www.bcdef.com/ddd%20%E5%BC%A0%E4%B8%89'));
console.log(decodeURIComponent('https%3A%2F%2Fwww.bcdef.com%2Fddd%20%E5%BC%A0%E4%B8%89'));

eval() 放弃
Global属性

Date,RegExp,Error,EvalError,......

window 对象
Math对象
常用方法
max,min,
ceil 执行向上舍入
floor 执行向下舍入
round 标准舍入
random 随机数

拓展

http://www.css88.com/archives/9336

相关文章

  • javascirpt基础语法解读

    注释 单行 多行 严格模式 use stricthttps://developer.mozilla.org/zh-...

  • Javascirpt 语法(一)

    原生js学习笔记 内容中的链接是相关的学习链接 是学习过程中的记录在代码中 开发环境配置 -安装HBuilder:...

  • Javascript知识整理——表单脚本

    表单的基础知识 在Javascirpt中,表单元素 对应的是HTMLFormElement类型,继承了的是Elem...

  • 【Android】知识点汇总,坚持原创ing

    Android基础 Java基础 Java基础——Java内存模型和垃圾回收机制 语法基础 语法基础——C语法基础...

  • java

    语法基础1.1 java初体验(语法基础)1.2 变量和常量(语法基础)1.2 变量和常量(语法基础)1.4 流程...

  • AppWorker教程-基础-组件概述

    组件是AppWorker的基础,平台根据Android,IOS的SDK抽象了一套统一的javascirpt库,把所...

  • 003 第一个页面

    第一个页面 一、基础模板 二、模板解读 DOCTYPE:指定文档类型,规定html标签语法 html:文档根标签,...

  • javascirpt复习

    实例中访问构造函数原型的指针,指向的是构造函数原型,不是构造函数; 所以重写构造函数原型对象,【实例对象】访问还是...

  • 软帝学院:80道java基础部分面试题(四)

    Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语法,集...

  • 快速上⼿ Kotlin

    快速上⼿ Kotlin 基础语法 函数基础语法 与 Java 代码互调 Java 与 Kotlin 交互的语法变化...

网友评论

      本文标题:javascirpt基础语法解读

      本文链接:https://www.haomeiwen.com/subject/ctzpiftx.html