復習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.pswp.cn/news/249731.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/249731.shtml
英文地址,請注明出處:http://en.pswp.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…