数据类型

基本类型

  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格式的string
var str = 'var user ={"name": "张三",age : 23,"address":"北京市大兴区"}'; // 使用eval函数解析并执行这个从服务器端返回的string
eval(str) // 访问对象的属性
console.log("user.name=" + user.name + ",age=" + user.age + ",address=" + user.address);

复习JavaScript随手记的更多相关文章

  1. 【课堂笔记精选】为了能够用“Unity”软件做游戏,我要从最基础的开始复习JavaScript

    [声明]在“随笔”模块,只是知识点,但是在“文章”模块(https://www.cnblogs.com/Robot-DX3906/articles/10579584.html)里面,有更多内容. 20 ...

  2. 38、重新复习javascript之三

    前言 虽然吧,每天都没有什么太有技术性的工作者,但是技术不能丢,希望也要有,人如果没有希望那不就和咸鱼一样了吗?小伙加油吧 1.html与javascript结合 <!DOCTYPE html ...

  3. javascript随手记

    编码规范 避免使用全局变量 写在所有函数外面的变量就是全局变量. 之所以要避免使用全局变量是因为:如果有多个类库的话,它们都定义了一个名字的变量.这时候后引入的类库中该变量的值就会覆盖前面引入的类库中 ...

  4. JS倒计时器一只,顺便复习javascript时间相关函数

    window.onload = function(){ var uS = 604800; //后台提供 : 秒 var day=hour=minute=second=0, timer; var dem ...

  5. (译文)12个简单(但强大)的JavaScript技巧(一)

    原文连接: 12 Simple (Yet Powerful) JavaScript Tips 我将会介绍和解析12个简单但是强大的JavaScript技巧. 这些技巧所有的JavaScript程序员都 ...

  6. javascript的预编译和执行顺序

    原文:javascript的预编译和执行顺序 最近在复习javascript的事件处理时发现了一个问题,然后也是我来写javascript的预编译和执行顺序的问题 代码: 代码一<html> ...

  7. javascript中关于&& 和 || 表达式的小技巧分享

    如果你还是新手, 而且读完所有这些技巧的详解和每种技巧是如果工作的以后运用它们, 你会写出更加简练高效的JavaScript程序. 确实, JavaScript高手已经运用这些技巧写出了很多强大, 高 ...

  8. JavaScript技巧手冊

    js小技巧 每一项都是js中的小技巧,但十分的有用! 1.document.write(""); 输出语句  2.JS中的凝视为//  3.传统的HTML文档顺序是:documen ...

  9. 【JS】JavaScript引擎的内部执行机制

     近期在复习JavaScript,看到setTimeout函数时.想起曾经刚学时,在一本书上看过setTimeout()里的回调函数执行的间隔时间有昌不是后面设置的值.曾经没想太多.网上看了JS大 ...

随机推荐

  1. 深入react技术栈解读

    1. react实现virtual DOM ,如果要改变页面的内容,还是需要执行DOM操作,比原生操作DOM多了virtualDOM的操作(计算,对比等), 应该是更耗性能??? 2. react特点 ...

  2. Yii2 配置request组件解析 json数据

    在基础版本的config目录下 web.php 或者高级版config目录下的main.php中配置 'components' =>[ 'request' => [ 'parsers' = ...

  3. postman的巨坑 之 cookie

    问题描述:一个后端接口,该接口需要校验登录态,登录态通过cookie中的一个传参k判断.在保证登录的前提下,调用机器A上的接口一直报“用户未登录”,调机器B上就没问题,于是开始排查问题. 解决过程: ...

  4. 四则运算——单元测试(测试方法:Right-BICEP )

    一.测试的具体部位 Right-结果是否正确? B-是否所有的边界条件都是正确的? I-能查一下反向关联吗? C-能用其他手段交叉检查一下结果吗? E-你是否可以强制错误条件发生? P-是否满足性能要 ...

  5. 软件工程 - 第二十次作业 Alpha 事后诸葛亮(团队)

    Alpha 事后诸葛亮(团队) 组长本次作业链接:https://www.cnblogs.com/dawnduck/p/10056026.html 现代软件工程 项目Postmortem 设想和目标 ...

  6. 《DWZ笔记一》<select>动态联动菜单

    联动菜单,即组合框Combo box,在DWZ文档中对组合框combox的是这样描述的: 在传统的select 用class 定义:class=”combox”, html 扩展:保留原有属性name ...

  7. Mac 常用快捷键整理

    Mac下常用的快捷键: Command+W 将当前窗口关闭(可以关闭Safari标签栏,很实用) Command+Option+M 将所有窗口最小化 Command+Q 关闭当前应用程序(相当于Doc ...

  8. PHP《将画布(canvas)图像保存成本地图片的方法》

    用PHP将网页上的Canvas图像保存到服务器上的方法 2014年6月27日 歪脖骇客 发表回复 8 在几年前HTML5还没有流行的时候,我们的项目经理曾经向我提出这样一个需求:让项目评审专家们在评审 ...

  9. CentOS卸载系统自带的OpenJDK并安装Sun的JDK的方法

    查看目前系统的jdk: rpm -qa | grep jdk 得到的结果: [root@dc-01 java]#  rpm -qa | grep jdk java-1.6.0-openjdk-1.6. ...

  10. Deepin系统又损坏了!

    1.首先,去Deepin官方下载镜像(记得MD5检验一下).2.提取ISO里的安装程序到桌面,执行之&写入.(提醒:勾选下面的支持BIOS启动的选项,自测深度的UEFI很不稳定,建议不使用UE ...