数据类型

基本类型

  1. string
  2. number
  3. boolean
  4. undefined

number类型,包含整数浮点数

NaN和自己都不相等,涉及NaN的计算结果都是NaN

isNaN()函数用于判断一个数是不是NaN

引用类型

object类型

function类型 继承自object

object类型定义了prototype属性

可以通过它动态给对象绑定方法和属性

内置对象

String

封装了很多方法,如 split() replace(),indexof(),includes()

Array

JS中的数组,在数组中可以保持任何类型的数据,并且数组的长度会自动的增加

创建数组对象:

  • 方式1:用这种方式创建数组的时候我们并没有指明数组元素的类型和数组对象的长度
    var arr = new Array();
  • 方式2:用这种方式创建数组的时候我们指明了数组对象的长度
    var arr = new Array(5);

  • 方式3:用这种方式创建数组的时候我们指明了数组对象的长度
    var arr = new Array("Hello", "World", 23, 5.6);

  • 方式4:
    var arr = ["Hello", "World", 23, 6.3, true, false, new Date()];

Date

常用方法

> var d=new Date();
undefined
> d
2019-01-26T11:13:49.912Z
> d.getTime();
1548501229912
> d.toString();
'Sat Jan 26 2019 19:13:49 GMT+0800 (GMT+08:00)'
> d.toLocaleString();
'2019-1-26 19:13:49'
> 

Math

注意:JS中的Math类和Java中的Math类类似.都是用来执行某些算术操作的
都是不能创建对象的.类似于Java中,通过类名.xxx,类名.xxx()调用属性和方法

    var pai = Math.PI;var num = Math.max(10, 30);

Regexp

正则表达式就是专门来处理String数据的.按照特定的规则,用正则元素指定一个有规则的模板
(例如邮箱的规则),然后测试某个String是否符合这个规则.(也就是测试某个String是否符合邮箱的规则)

使用方式:

创建正则对象

调用test()方法

被测试字符串满足正则规则返回true

    // 测试参数string是否是有效的中文字符// JS中字符是采用UniCode编码的,每个国家的字符都在在UniCode编码的某个范围之内function checkChinaese(str) {var re = "[\u4e00-\u9fa5]"; // 中文的编码范围var regExp = new RegExp(re); // 创建正则表达式对象if (regExp.test(str)) {return true;} else {return false;}}

创建正则对象的方式:

  1. var reg = new RegExp("^[hH]ello$");
  2. var reg = /^[hH]ello$/
> var reg = /^[hH]ello$/
undefined
> reg.test("hello");
true
> reg.test("Hello");
true
> reg.test("Hello1");
false
> reg.test("Hffellasdfo1");
false

数据类型转换

typeof()函数检查数据的类型

js和python一样会自动将数据转换成boolean类型用于条件表达式

转换规则: 0 NaN "" undefined null ->false

底层实现是调用了Boolean()函数

const PI = 3.14;if (PI){console.log("PI is true");
}

非数值类型转数值类型

  1. 可以使用Number()函数
  2. 使用parseInt()函数
  3. 使用parseFloat()函数

常用parseInt()``parseFloat()将string转数值

非string转string

  1. toString() (null和undefined不能用这个方法)
  2. String()函数,该函数可以将任何类型数据转换为String,包括null和undefined

null,undefined,NaN的比较

  1. undefined与null是相等;

  2. NaN与任何值都不相等,与自己也不相等。

变量声明

var

声明变量

const

声明常量,必须赋初始值,且不能修改.

let

声明局部变量

运算符

==

JS中的== 和java中的== 相同点

  1. 对于基本类型来说,是比较两个基本类型的值是否相等
  2. 对于引用类型来说,是比较两个引用的地址是否相同

JS中的== 和java中的== 不同点

  • 下面这种写法在java中是错误的.但是在JS中是可以的.在js会吧两个不同类型的变量转换成相同的类型,然后再去比较
  • 转换的规则如下:当两个运算数的类型不同时:将他们转换成相同的类型,
    • 1)一个数字与一个字符串,字符串转换成数字之后,进行比较。
    • 2)true转换为1、false转换为0,进行比较。

===这是java没有的.具体的用法:

  • 只有两个变量的类型一致的时候,才会去比较.如果两个变量的类型不一致则直接返回false
  • === 既要比较变量的类型,又要比较变量的值

delete

delete运算符的使用,有三种形式

  1. 删除对象中的某个属性.但是不会影响其他的对象
  2. 删除数组中的某个元素,但是不会影响数组的长度和其他的数组元素
  3. 用在with语句中

void指定要计算一个表达式但是不返回值

href="javascript:void(0)" 不会重新刷新页面

函数

js没有函数重载

声明方式1

function add(x, y){return x +y;
}
//形参 不用var/let/const 也没有类型,不用有返回值类型,只能返回1个值

声明方式2

add = function (a, b) {return a +b;
};

流程控制

switch

swich语句的条件是任何类型的变量

var s1 = "hello";
switch(s1){case "hello":console.log("hello world");break;case "world":console.log("world");break;default:console.log("上述条件都不满足的情况");break;
}

for

常规for循环

for (let i = 0; i < 10; i++) {console.log("老婆,我想你");
}

for in (类似python中的for in 但是jsforin 只能取到Index)

const array = [3, 6, 8, 9, "呵呵", false]for (let index in array) {console.log(array[index]);
}

while/do while/if和java一样

面向对象

  1. 声明类
  2. 创建对象
  3. 调用对象的属性和方法
function Boy(name, age) {this.name = name;this.age = age;this.sayHello = function (name) {return "Hello " + name + " !";}this.toString = function () {return "[name:" + this.name + ",age:" + this.age + "]";}
}let boy = new Boy("小明", 12);
console.log(boy.toString());
console.log(boy.sayHello("Jack"));

with语句,简化对象的访问,不用obj.xx.

let boy = new Boy("小明", 12);with (boy) {console.log(name);sayHello("Rose");console.log(toString());
}

JSON

eval()函数

我们把一段有效的JS代码放到了一个String中
eval()函数就可以解析并执行String中有效的js代码

> var s2 = "console.log('hello js!')";
undefined
> eval(s2);
hello js!
undefined

JSON定义语法

JavaScript对象标记,可以简化自定义对象的使用过程,定义并实例化一个js对象
JSON语法 : var 变量 = {
属性: 属性值,
属性: 属性值,
属性: 属性值 // 注意:最后一个语句后面没有,
};
属性值 可以是 任何类型,(当然也可以是数组了)

> var xx = {name:"jack",age:12}
undefined
> xx
{ name: 'jack', age: 12 }
> xx.age;
12
> xx['age']
12

属性的访问方式:

  1. xx.属性名
  2. xx["属性名"]

定义有方法的JSON对象

function sayHi(name) {console.log("你好," + name + "!!");
}var stu = {name: '张小三', age: 12, sayHello: sayHi}stu.sayHello("小明");

定义复杂的JSNO对象,属性名可以用字符串,也可以不用.

 var per = {"name": "张三","addr": {  // 地址的属性是另外一个JSON对象"city": "北京","street": "大兴区","zipcode": "100012"},"aihao": ["抽烟", "喝酒", "烫头"] // 爱好属性的值是一个数组};

使用JSON来传输数据

    // 下面这个string就是从服务器端返回的json格式的stringvar str = 'var user ={"name": "张三",age : 23,"address":"北京市大兴区"}';// 使用eval函数解析并执行这个从服务器端返回的stringeval(str)// 访问对象的属性console.log("user.name=" + user.name + ",age=" + user.age + ",address=" + user.address);

转载于:https://www.cnblogs.com/endurance9/p/10324730.html

复习JavaScript随手记相关推荐

  1. 复习JavaScript时的笔记

    复习JavaScript时的笔记(自己看的) 跟着w3cSchool复习时,一些没记住的东西.没有顺序逻辑的内容. Math类 Math.round()四舍五入 Math.random() 0~1之间 ...

  2. JavaScript高级手记(简单实现Promis)

    JavaScript高级手记(简单实现Promis) // 实现Promise function _Promise(fn){// 要求接收的fn必须是一个函数,否则报错if(typeof fn !== ...

  3. 核心(Core) Javascript 学习手记

    说明: 一字一句都是俺敲出来的, ^^. 转载请注明出处哦. 前些日子, 发现好些地方需要用到 Js 代码, 以前没怎么系统的学习过, 要用到的时候查一堆一堆的手册, 写得不好不说, 还很浪费时间,  ...

  4. 复习Javascript专题(二):闭包,内存,以及垃圾回收机制

    1.什么是闭包?闭包有啥特性以及存在什么问题? 概念:闭包是指有权访问另一个函数作用域中的变量的函数.下面的outer就形成了一个闭包: function outer(){const name='na ...

  5. 复习javascript入门到精通

    javascript历史 作者是布兰登.艾奇,在网景公司任职期间于1995年利用十天时间完成了对javascript程序的设计,最初发布时候叫livescript后更名为javascript java ...

  6. 复习javascript中call,apply,bind的用法

    一直很难理解js中的call apply bind,在w3schools,mdn阅读了,也看了很多相关的文章,今天我来写下我理解的call apply bind 首先创建一个函数 function m ...

  7. 复习Javascript专题(一):基本概念部分

    一.数据类型 基本类型:`Null Boolean String Undefined Number(NB SUN)`引用类型:`Array Function Object`类型判断:typeof 返回 ...

  8. javaScript 之淘宝购物车(课程总复习,个人小项目)

    前言:今天主要想跟大家分享一下个人项目,感兴趣的往下瞧瞧噢~~         3. 个人项目(Perfume House :香水购物车) 一.复习 javaScript 总课程: 1.javaScr ...

  9. wpf绑定 dictionary 给定关键字不再字典中_为什么要在 JavaScript 中学习函数式编程?...

    请忘掉你认为你知道的有关 JavaScript 的任何东西,以初学者心态来接触这份资料. 为帮助你这样做,我们打算从头开始复习 JavaScript 的基础知识, 就好像你以前从来没有看到过 Java ...

最新文章

  1. form表单用js提前执行函数若不成功则不提交_如何用Jmeter做接口自动化测试?跟着操作一次就明白了...
  2. jakarta ee_MicroProfile在Jakarta EE时代的作用
  3. 【HDU2896】病毒侵袭——ac自动机
  4. 网络协议:超时与重传机制
  5. 运维测试工作笔记0003---使用Jmeter测试_http接口_高并发测试
  6. 裁员、卖手机、押注VR,HTC能否王者归来?
  7. 大学生使用计算机趋势英语作文,学习使用电脑StudentUseofComputers
  8. CentOs7配置java环境
  9. Android计分器课程设计,比赛计分器课程设计.doc
  10. cad断点快捷键_CAD如何打断?CAD打断点和CAD打断命令操作方法
  11. linux alsa工具,浅析alsa-utils工具aplay, mplayer
  12. 【Proteus】单片机H桥驱动24V直流有刷电机
  13. C# Resharper的简单使用介绍
  14. FISCO BCOS最强学习路径,汇聚全网资源(2022更新版)
  15. 户外大覆盖无线访问接入AP?
  16. 对称矩阵特征向量正交的推导
  17. 服务器主机进不去系统,服务器主机进不了系统
  18. 北京科技大学本科毕业论文答辩PPT模板
  19. PTA L1-030 一帮一(详解)
  20. stm8 RTC自动唤醒

热门文章

  1. [机器学习] XGBoost on Spark 分布式使用完全手册
  2. 未能加载文件或程序集Microsoft.VisualStudio.Web.PageInspector.Loader
  3. github上传本地代码
  4. 基于决策树的多分类_R中基于决策树的糖尿病分类—一个零博客
  5. C语言高级编程:结构体中定义数组的“妙用”
  6. 工商银行信用卡如何通过刷星提额?
  7. 30几岁该有多少存款才算合格?
  8. Detection and Classification of Acoustic Scenes and Events(DCASE2013详细介绍)
  9. 贷款时,如何评估借款人的还款意愿
  10. Live Migrate 操作 - 每天5分钟玩转 OpenStack(42)