03Javascript++1128

目录

JS是一门弱类型语言、客户端语言

控制语句

JSON

浏览器对象模型

AJAX

正则表达式

使用字符串方法

正则表达式修饰符

正则表达式模式

使用RegExp对象

使用test()

使用exec()

判断数据类型

JavaScript错误

let 和 const

let

const

区别

闭包


JS是一门弱类型语言、客户端语言

不需要强制写分号


控制语句

for...in 一般数组对象的遍历,常用for in


JSON

json是格式,不是类型

json是一种轻量级的数据交换格式

使用双引号

JSON 是用于存储和传输数据的格式。

JSON 通常用于服务端向网页传递数据 。

JSON.parse()  用于将一个JSON字符串转换为JavaScript对象

JSON.stringify()  Javscript转JSON字符

var a = {"sites":[ {"name":"Runoob", "url":"www.runoob.com"}, {"name":"Google", "url":"www.google.com"}, {"name":"Taobao", "url":"www.taobao.com"} ]}
        console.log(JSON.stringify(a));
        console.log(JSON.parse(JSON.stringify(a)));

浏览器对象模型

window.location.search 截取地址栏的url (页面之间传参数)


AJAX

AJAX = Asynchronous JavaScript and XML(异步的 JavaScript 和 XML)。

AJAX 不是新的编程语言,而是一种使用现有标准的新方法。

AJAX  简单来说就是 通过XmlHttpRequest对象向服务器发异步请求,从服务器获得数据,然后用 javascript 来操作DOM更新页面的技术。与服务器交换数据并更新部分网页的艺术,在不重新加载整个页面的情况下。

 增删改查 POST DELETE PUT GET


正则表达式

在代码中中常简写为regex、regexp或RE

使用单个字符串来描述、匹配一系列符合某个句法规则的字符串搜索模式

搜索模式可用于文本搜索和文本替换

正则表达式参数可用在以上方法中 (替代字符串参数)。
正则表达式使得搜索功能更加强大(如实例中不区分大小写)。

var patt = /runoob/i

/runoob/i  是一个正则表达式。

runoob  是一个正则表达式主体 (用于检索)。

i  是一个修饰符 (搜索不区分大小写)。

使用字符串方法

search()方法用于检索字符串中指定的子字符串,或检索与正则表达式相匹配的子字符串,并返回子串的起始位置。

replace()方法用于在字符串中用一些字符替换另一些字符,或替换一个与正则表达式匹配的子串。

正则表达式修饰符

修饰符可以在全局搜索中不区分大小写

正则表达式模式



使用RegExp对象

RegExp 对象是一个预定义了属性和方法的正则表达式对象。

使用test()

test() 方法用于检测一个字符串是否匹配某个模式,如果字符串中含有匹配的文本,则返回 true,否则返回 false。

var patt = /e/;
patt.test("The best things in life are free!");
//true

使用exec()

exec() 方法用于检索字符串中的正则表达式的匹配。

该函数返回一个数组,其中存放匹配的结果。如果未找到匹配,则返回值为 null。


判断数据类型

typeof 返回数据类型包含:number、boolean、symbol、string、object、undefined、function

instanceof 检测的是原型

instanceof 运算符用于检测构造函数(constructor)的 prototype 属性是否出现在某个实例(object)对象的原型链上。

object instanceof constructor

代码创建了一个类型 Car,以及该类型的对象实例 mycarinstanceof 运算符表明了这个 mycar 对象既属于 Car 类型,又属于 Object 类型。


JavaScript错误

try测试代码块的错误

catch处理错误

throw创建自定义错误

finally语句在try和catch语句之后,无论是否触发异常,都会执行

try { ... //异常的抛出 }

catch(e) { ... //异常的捕获与处理 }

finally { ... //结束处理 }


let 和 const

ES2015(ES6) 新增加了两个重要的 JavaScript 关键字: let 和 const

let 声明的变量只在 let 命令所在的代码块内有效。

const 声明一个只读的常量,一旦声明,常量的值就不能改变。

在 ES6 之前,JavaScript 只有两种作用域: 全局变量 与 函数内的局部变量

let

var x = 10;

// 这里输出 x 为 10

{

        let x = 2;

        // 这里输出 x 为 2

} // 这里输出 x 为 10

使用 let 关键字声明的全局作用域变量不属于 window 对象

let 关键字定义的变量则不可以在使用后声明,也就是变量需要先声明再使用。

const

声明一个或多个常量,声明时必须进行初始化,且初始化后值不可再修改

const跟let一样都是块级作用域,都不能和它所在作用域内的其他变量或函数拥有相同的名称

const 的本质: const 定义的变量并非常量,并非不可变,它定义了一个常量引用一个值。使用 const 定义的对象或者数组,其实是可变的

区别

  • const声明的常量必须初始化,而let声明的变量不用
  • const 定义常量的值不能通过再赋值修改,也不能再次声明。而 let 定义的变量值可以修改。

闭包

由于在Javascript语言中,只有函数内部的子函数才能读取局部变量,因此可以把闭包简单理解成"定义在一个函数内部的函数"。

本质上,闭包就是将函数内部和函数外部连接起来的一座桥梁

最大用处有两个,一个是前面提到的可以读取函数内部的变量,另一个就是让这些变量的值始终保持在内存中。

点击li元素生成序列号

var lis = document.querySelectorAll('li');
        var ul = document.querySelector("ul");

        for (var i = 0; i < lis.length; i++) {
            lis[i].addEventListener("click", (function(i){
                return function f() {
                    console.log(i);
                }
            }) (i))
        }

函数表达式和函数声明

//函数声明式
function greeting() {
  console.log("123")
}

//函数表达式
var greeting = function() {
  console.log("123")
}

区别

1.函数声明的方法定义的函数,函数名是必须的,而函数表达式的函数名是可选的
如果函数表达式声明的函数有函数名,那么这个函数名就相当于这个函数的一个局部变量,只能在函数内部调用

2.以函数声明的方法定义的函数,函数可以在函数声明之前调用,而函数表达式的函数只能在声明之后调用
函数声明整体会被提升到当前作用域的顶部,函数表达式也提升到顶部但是只有其变量名提升

3.函数声明的方法定义的函数并不是真正的声明,它们仅仅可以出现在全局中,或者嵌套在其他的函数中,但是它们不能出现在循环,条件或者try/catch/finally中,而函数表达式可以在任何地方声明

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值