复习JavaScript随手记

数据类型

基本类型

  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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/249731.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

TP5在前端时间戳转换为时间格式

value"{:date(Y-m-d H:i:s,$data[add_date])}" 例如&#xff1a; <td>{:date(Y-m-d H:i:s,$d[create_time])}</td> 转载于:https://www.cnblogs.com/shark1100913/p/9468077.html

Java(发布/订阅模式)

1、概述 观察者模式又称为发布/订阅(Publish/Subscribe)模式 观察者设计模式涉及到两种角色&#xff1a;主题&#xff08;Subject&#xff09;和观察者&#xff08;Observer&#xff09; &#xff08;1&#xff09;Subject模块 Subjec模块有3个主要操作 addObserver()&#…

VUE $SET源码

转载于:https://www.cnblogs.com/smzd/p/11634255.html

JS 日期格式化

1、将中国标准时间格式化为&#xff08;2017-06-06 15:05:04&#xff09; function formatDateTime(theDate) { var _hour theDate.getHours(); var _minute theDate.getMinutes(); var _second theDate.getSeconds(); var _year theDate.getFullYear() var _month theDat…

canvas 入门

<canvas>是HTML5新增的&#xff0c;是可以使用脚本&#xff08;JavaScript&#xff09;在其中绘制图像的HTML元素。 canvas是由HTML代码配合高度和宽度属性而定义出的可绘制区域&#xff0c;JavaScript代码可访问该区域&#xff0c;类似于其它通用的二维API&#xff0c;通…

Java实现消息队列服务

使用 JAVA 语言自己动手来写一个MQ (类似ActiveMQ,RabbitMQ) 主要角色 首先我们必须需要搞明白 MQ (消息队列) 中的三个基本角色 ProducerBrokerConsumer 整体架构如下所示 自定义协议 首先从上一篇中介绍了协议的相关信息,具体厂商的 MQ(消息队列) 需要遵循某种协议或者…

Knockout中ko.utils中处理数组的方法集合

每一套框架基本上都会有一个工具类&#xff0c;如&#xff1a;Vue中的Vue.util、Knockout中的ko.utils、jQuery直接将一些工具类放到了$里面&#xff0c;如果你还需要更多的工具类可以试试lodash。本文只介绍一下Knockout中ko.utils中处理数组的一些方法。 ko.utils.arrayForEa…

$nextTick 源码

x现在没时间&#xff0c;留个坑 转载于:https://www.cnblogs.com/smzd/p/11634665.html

java 发布订阅

1.发布者接口 package com.yy.subpub; /** * Description: 发布者接口 * author: leijing * date: 2016年9月29日 下午5:07:20 */ public interface IPublisher<M> { /** * Description: 向订阅器发布消息 * param subscribePublish 订阅器 * param message 消息 * para…

.NET Core Session的简单使用

前言 在之前的.NET 里&#xff0c;我们可以很容易的使用Session读取值。那今天我们来看看 如何在.NET Core中读取Session值呢&#xff1f; Session 使用Session之前&#xff0c;我们需要到Startup.cs中配置我们的服务如下&#xff1a; ①在ConfigureServices中加入&#xff1a;…

EasyNVR内网摄像机接入网关+EasyNVS云端管理平台,组件起一套轻量级类似于企业级萤石云的解决方案...

背景分析 对于EasyNVR我们应该都了解&#xff0c;主要应用于互联安防直播&#xff0c;对于EasyNVR&#xff0c;我们可以清楚的发现&#xff0c;EasyNVR的工作机制是EasyNVR拉取摄像机的RTSP/Onvif视频流&#xff0c;然后客户端可以通过访问EasyNVR服务端实现流分发&#xff0c;…

java.util.Queue用法

队列是一种特殊的线性表&#xff0c;它只允许在表的前端&#xff08;front&#xff09;进行删除操作&#xff0c;而在表的后端&#xff08;rear&#xff09;进行插入操作。进行插入操作的端称为队尾&#xff0c;进行删除操作的端称为队头。队列中没有元素时&#xff0c;称为空队…

Vim删除文件到行首或者行尾

vim用的不是很熟练&#xff0c;只是有时候需要的时候会学习一下 我们知道&#xff0c;vim有三种模式&#xff0c;一种是一般模式&#xff0c;一种是编辑模式&#xff0c;另外一种是命令行模式 在一般模式下&#xff0c;可以进行删除&#xff0c;复制粘贴等操作&#xff0c;在编…

新版本微信导致的ios表单bug

解决方法如下&#xff1a; $(document).delegate(input, textarea, select, blur, function(){setTimeout(function(){$(html).animate({height: 100.1vh}, 100, function(){$(this).animate({height: 100vh}, 1)})},100); }); 转载于:https://www.cnblogs.com/qdlhj/p/1033676…

Golang的值类型和引用类型的范围、存储区域、区别

常见的值类型和引用类型分别有哪些&#xff1f; 值类型&#xff1a;基本数据类型 int 系列, float 系列, bool, string 、数组和结构体struct&#xff0c;使用这些类型的变量直接指向存在内存中的值&#xff0c;值类型的变量的值通常存储在栈中。 引用类型&#xff1a;指针、sl…

python3之time模块

时间戳1: import time2: print(time.time()) 可读的时间格式1: import time2: print(time.ctime())3: later time.time() 6004: print(time.ctime(later)) 结果1: Wed Jan 30 17:11:49 20192: Wed Jan 30 17:21:49 2019 暂停程序(进程或者线程)1: time.sleep(secs) 计时时钟1…

网络规划设计(项目类业务)

前期准备&#xff1a;找经开部要到当地的现场结构图 1.和通信段约好时间&#xff0c;实地跑一趟&#xff0c;找到光缆、电缆的原汇聚点。 2.与车间人员沟通&#xff0c;看是否要迁汇聚点&#xff0c;倘若迁汇聚点&#xff0c;迁到哪里。 3.怎么从光缆/电缆的旧址迁到新址&#…

RPC框架实现原理

一、什么是RPC框架&#xff1f; RPC&#xff0c;全称为Remote Procedure Call&#xff0c;即远程过程调用&#xff0c;是一种计算机通信协议。 比如现在有两台机器&#xff1a;A机器和B机器&#xff0c;并且分别部署了应用A和应用B。假设此时位于A机器上的A应用想要调用位于B机…

jQuery安装

http://www.runoob.com/jquery/jquery-install.html 网页中添加jQuery&#xff1a; 方法一&#xff1a;可以从http://jquery.com/download/ 下载jQuery库 方法二&#xff1a;从CDN中载入jQuery 下载 jQuery 有两个版本的 jQuery 可供下载&#xff1a; Production version - 用于…

redhat相关配置

网络配置&#xff1a; vi /etc/sysconfig/network-scripts/ifcfg-eth BOOTPROTOstaticONBOOTyesIP配置IPADDR192.168.31.102NETMASK255.255.255.0GATEWAY192.168.31.1DNS1192.168.31.1redhat6&#xff1a;防火墙&#xff1a;1. 永久性生效开启&#xff1a;chkconfig iptables o…