JavaScript 相关知识

一、数组

var a = [1,2,3,4];
       console.log(a.length);   // 4
       a.push(5);
       console.log(a);         // [1, 2, 3, 4, 5]
       var ret = a.pop();
       console.log(ret);        // 5
       a.unshift(‘aaa‘);        // 头部插入元素
       console.log(a);          // ["aaa", 1, 2, 3, 4]
       var ret1 = a.shift();    // 头部移除元素
       console.log(ret1);       // aaa
       var ret2 = a.slice(1,3); // 切片,
       console.log(ret2);       // [2,3]

//     obj.splice(start, deleteCount, value, ...)  插入、删除或替换数组的元素
       console.log(a);
       a.splice(1,0,‘first‘);   // 指定位置插入元素
       a.splice(2,1,‘second‘);  // 指定位置替换元素
       a.splice(2,1);           // 指定位置删除元素
       console.log(a);
       var b = [‘22‘];
       console.log(b.concat(a)); // 连接字符串 ["22", 1, "first", 3, 4]
       console.log(a.join(‘-‘)); // 拼接字符串 1-first-3-4
       console.log(a.reverse()); // 反转字符串 [4, 3, "first", 1]

       console.log([3,2,5].sort())  //对number数组进行排序 

1、序列化 

序列化就是将JavaScript中的数据类型转换成字符串,反序列化的过程则相反

var a = ‘ss‘;
ret = JSON.stringify(a);        // ‘ss‘ 序列化
console.log(ret);
console.log(JSON.parse(ret));  // ss  反序列化  

2、转义  

一般使用在URL中字符的转义等,下面来看一下具体的用法

//      转义  其中escape() unescape()主要是对cookies使用
        var a = ‘http://www.baidu.com?name=李杰‘;
        console.log(encodeURI(a));              // http://www.baidu.com?name=%E6%9D%8E%E6%9D%B0
        console.log(decodeURI(encodeURI(a)));   // http://www.baidu.com?name=李杰
        console.log(encodeURIComponent(a));     // http%3A%2F%2Fwww.baidu.com%3Fname%3D%E6%9D%8E%E6%9D%B0
        console.log(decodeURIComponent(encodeURIComponent(a)));  // http://www.baidu.com?name=李杰

3、eval  

JavaScript中的eval是Python中eval和exec的合集,既可以编译代码也可以获取返回值。

console.log(eval(‘1+2*5-5‘)); // 6
console.log(eval(a = 1));     // 1 声明了一个局部变量a值为1 

4、正则表达式  

JavaScript中支持正则表达式,其主要提供了两个功能:

  • test(string)     用于检测正则是否匹配
  • exec(string)    用于获取正则匹配的内容

注:定义正则表达式时,“g”、“i”、“m”分别表示全局匹配,忽略大小写、多行匹配。下面来简单的看一下使用

var a = /\d+h/;
console.log(a.test(‘123h434‘)); // true  检测正则是否匹配,表单数据验证可用到
console.log(a.test(‘12a34‘));   // false

console.log(a.exec(‘123h434‘)); // ["123h", index: 0, input: "123h434"] 获取正则匹配内容
console.log(a.exec(‘123e434‘)); // null 

5、时间  

  在JavaScript中,Date对象用来表示日期和时间。JavaScript中提供了时间相关的操作,分别为获取时间和设置时间,时间操作中分为两种时间,统一时间(UTC),以及本地时间(东8区)

var now = new Date();
now.getFullYear();
now.getMonth(); // 6, 月份,注意月份范围是0~11,6表示7月
now.getDate(); // 7, 表示7号
now.getDay(); // 3, 表示星期三
now.getHours(); // 19, 24小时制
now.getMinutes(); // 49, 分钟
now.getTime(); // 1435146562875, 以number形式表示的时间戳

二、语句 

1、条件语句

if(条件){

    }else if(条件){

    }else{

    }

switch(name){
        case ‘1‘:
            age = 123;
            break;
        case ‘2‘:
            age = 456;
            break;
        default :
            age = 777;
    } 

2、循环语句

var names = ["alex", "tony", "rain"];

for(var i=0;i<names.length;i++){
    console.log(i);
    console.log(names[i]);
}

var names = ["alex", "tony", "rain"];

for(var index in names){
    console.log(index);
    console.log(names[index]);
}

while(条件){
    // break;
    // continue;
}

3、异常处理 

try {
    //这段代码从上往下运行,其中任何一个语句抛出异常该代码块就结束运行
}
catch (e) {
    // 如果try代码块中抛出了异常,catch代码块中的代码就会被执行。
    //e是一个局部变量,用来指向Error对象或者其他抛出的对象 主动跑出异常 throw Error(‘xxxx‘)
}
finally {
     //无论try中代码是否有异常抛出(甚至是try代码块中有return语句),finally代码块中始终会被执行。
}

三、函数

1、函数类型

  JavaScript中函数基本上可以分为一下三类,普通函数,匿名函数,自执行函数,此外需要注意的是对于JavaScript中函数参数,实际参数的个数可能小于形式参数的个数,函数内的特殊值arguments中封装了所有实际参数。

// 普通函数
    function func(arg){
        return true;
    }

// 匿名函数
    var func = function(arg){
        return "tony";
    }

// 自执行函数
    (function(arg){
        console.log(arg);
    })(‘123‘)

2、函数作用域  

  JavaScript中每个函数都有自己的作用域,当出现函数嵌套时,就出现了作用域链。当内层函数使用变量时,会根据作用域链从内到外一层层的循环,如果不存在,则异常。下面就是一个简单其实就是简单的闭包。

name = ‘jason‘;
        function f1() {
            var name = ‘kobe‘;
            function f2() {
                console.log(name);
            }
            return f2;
        }
        ret = f1();
        ret();               //打印出kobe f2函数的作用域已经定死,上一级作用域为f1 

四、面向对象

// 面向对象,没有class 用function定义
function Person(name,age) {
    this.name = name;             // Person充当构造函数
    this.age = age;               // this指代对象
}

// 使用原型保存类中的函数,如果放在person中,则每创建一个
// 对象都会在内存中创建一份,这样会浪费内存
Person.prototype = {
    Show:function () {
        console.log(this.name,this.age);
    }
};

Person.prototype.Show2 = function () {
    console.log(this.name,this.age)
};
person1 = new Person(‘jason‘,18);
person1.Show();                    // jason 18
person1.Show2()                    // jason 18

javascript补充 

  1. 为了强制使用var定义变量,可以在代码开始加上‘use strict‘,这样未被var声明的变量将会报错,前提是浏览器支持该模式
  2. 可以用转义字符\,‘I\‘am "ok"‘
  3. 要获取字符串某个指定位置的字符,可以使用s[1]下表进行操作, 如果对s[1] = ‘f‘赋值的话,不会报错,原字符串也不会改变。调用字符串的相关方法只会产生一个新的字符串
  4. 对数组进行操作,var f = [1,2],f[4] = 5,超过了数组长度,但是不会报错,相反数组f变成了 [1, 2,undefined × 2, 5]这一点需要特别注意,此外如果在pycharm中运行的话,不会出现上述情况但是会在数组中增加一个键值对。因此千万要注意自己操作数组的时候不要越界
  5. 数组切片,arr.slice(3)表示从索引3开始到结束,arr.slice(0, 3)表示从索引0开始,到索引3结束,arr.slice()可以复制一个数组。
  6. 对象,每个对象的属性用逗号分隔,访问不存在的属性会返回一个undefined,可以通过delete 删除某一属性,当然也可以直接动态的添加某一属性,要判断一个对象是否有某个属性,可以使用 in 比如 onsole.log(‘name‘ in xiaoming),但是这样可以能有一个问题,如果xiaoming继承了某一属性,那么判断这一属性也会成功,所以最好用 xiaoming.hasOwnProperty(‘name‘)
  7. 函数传参的时候,可以多传,也可以少传,少传的话,未被传入的参数会被定义为undefined,在函数内部用arguments获取到所有函数传入的参数,
  8. 函数内部的变量会"提前声明",具体的请看下面的代码
 function foo() {
        var x = ‘Hello, ‘ + y;
        alert(x);           // Hello, undefined
        var y = ‘Bob‘;
    }
    foo();

//    对于上述foo()函数,JavaScript引擎看到的代码相当于:
    function foo() {
    var y; // 提升变量y的申明
    var x = ‘Hello, ‘ + y;
    alert(x);
    y = ‘Bob‘;
}  

 9.不在任何函数内定义的变量就具有全局作用域,实际上,JavaScript默认有一个全局对象window,全局作用域的变量实际上被绑定到window的一个属性

var a = ‘hello‘;
console.log(window.a);
console.log(a);

function foo() {
    console.log(‘foo‘);
}
foo();
window.foo();

可以看到上面两种方式的执行效果一样,JavaScript实际上只有一个全局作用域。任何变量(函数也视为变量),如果没有在当前函数作用域中找到,就会继续往上查找,最后如果在全局作用域中也没有找到,则报ReferenceError错误。全局变量会绑定到window上,不同的JavaScript文件如果使用了相同的全局变量,或者定义了相同名字的顶层函数,都会造成命名冲突,并且很难被发现。减少冲突的一个方法是把自己的所有变量和函数全部绑定到一个全局属性中。例如:

// 唯一的全局属性MYAPP:
var MYAPP = {};

// 其他变量:
MYAPP.name = ‘myapp‘;
MYAPP.version = 1.0;

// 其他函数:
MYAPP.foo = function () {
    return ‘foo‘;
};

10. Arraysort()方法默认把所有元素先转换为String再排序,结果‘10‘排在了‘2‘的前面,因为字符‘1‘比字符‘2‘的ASCII码小。

时间: 2024-10-18 10:02:33

JavaScript 相关知识的相关文章

javascript相关知识

全新的作用域和闭包的概念 如何区分数据在内存中存放的位置是堆.栈还是池 1.看到var或者function一定在栈中,typeof的结果是function 2.typeof的结果如果不是object都在池里 3.typeof的结果如果是object都在堆里 闭包 临时闭包是由函数调用所产生 闭包中又会划分栈和堆两个区域,在闭包中定义的变量会在闭包的栈中,我们称之为局部 变量 不是定义在闭包中的变量,我们称之为全局变量 作用域 局部变量的作用域就只在当前的闭包中产生作用 全局变量的作用域可以再任何

相关知识: JavaScript

相关知识: JavaScript JavaScript是一种编程语言,它被广泛用来实现web站点和应用中的交互效果. JavaScript可以同样式进行交互,你可以通过编写程序来动态改变文档上元素的样式. 有三种方法可以实现这样的效果: 控制样式表—可以添加.删除.修改样式表. 控制样式规则—可以添加.删除.修改样式规则. 控制DOM中的单个元素—可以不依赖样式表来修改元素样式. 更多细节 要了解 JavaScript的更多细节,可以到这个wiki JavaScript . 范例: 一个Java

与Javascript相关的数据结构和算法

著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处.作者:豪情链接:http://www.zhihu.com/question/36882354/answer/69416260来源:知乎 建议先打好基础,了解js语言的特性或玩法,然后再来玩算法,个人感觉才能四两拨千斤,算法这种东西,是高级抽象的东西,简单说:是熟悉计算机语言解决日常需求的前提下,熟练的选择一种高效的做事方式,先了解如何将日常的需求或人类的自然语言转换为计算机语言,然后在进一步的确定算法在整个代码开发中所扮演的角色

javascript 相关小的知识点集合

本文主要是列出一些javascript 相关的,不限于javascript的,容易记错或者遗忘的小知识,小技巧. 1.javascript中的false 在 JavaScript,常见的 false 值: 0, '0', +0, -0, false, '',null,undefined,NaN 要注意空数组([])和空对象({}): console.log([] == false) //true console.log({} == false) //false console.log(Boole

web聊天相关知识

http相关知识 http是无状态,请求,响应模式的通信模式,就是用户每次通过浏览器点击一下页面,都需要重新与web服务器建立一下连接,且发送自己的 session id 给服务器端以使服务器端验证此用户的身份.客户端若想从web服务器上获取数据,必须主动发起一个请求,然后接收服务器端的返回,服务器端不会主动向客户端推送消息. 基于传统的web服务器只会被动响应客户端请求的这个特性,想实现web实时聊天的需求,有以下几个方式:   轮询(polling) 轮询,客户端向服务器发出请求以获取一些数

HTML入门基础教程相关知识

HTML入门基础教程 html是什么,什么是html通俗解答: html是hypertext markup language的缩写,即超文本标记语言.html是用于创建可从一个平台移植到另一平台的超文本文档的一种简单标记语言,经常用来创建web页面.html文件是带有格式标识符和超文本链接的内嵌代码的ascii 文本文件——html结构了解. html文本是由 html命令组成的描述性文本,html 命令可以说明文字. 图形.动画.声音.表格.链接等. html网页结构包括头部 (head).主

BI 主要环节 ETL 相关知识

BI架构-BI 主要环节 ETL 相关知识 主要功能  :将源系统的数据加载到数据仓库 及数据集市层中: 主要问题体现:  复杂的源数据环境,包括繁多的数据种类.巨大的加载数据量.错综复杂的数据关系和参差不齐的数据质量 常见术语  ETL:数据抽取.转换.加载(Extract/Transform/Load)  EXF:抽取的文件(Extract File)  CIF:共用接口文件(Common Interface File)  PLF:预加载文件(Preload File)  LDF:

【转载】JavaScript基础知识体系

前言 最近总是有一种感觉,对于知识没有积淀,很多时候都是忘记了哪里就去查一下,比如JS这种语言,很是浪费时间,如果能够把这些知识形成知识体系塞进大脑,做到即用即取就好了,那么就可以借助思维导图来帮助我们完成这项工作.所谓温故而知新,今天把JavaScript相关的知识整理下(图片来自网络). 一.JavaScript变量 二.JavaScript数据类型 三.JavaScript运算符 四.JavaScript流程语句 五.JavaScript字符串函数 六.JavaScript正则表达式 七.

angular管道相关知识

什么是管道 每个应用开始的时候差不多都是一些简单任务:获取数据.转换它们,然后把它们显示给用户. 获取数据可能简单到创建一个局部变量就行,也可能复杂到从WebSocket中获取数据流.一旦取到数据,我们可以把它们原始值的toString结果直接推入视图中. 但这种做法很少能具备良好的用户体验. 比如,几乎每个人都更喜欢简单的日期格式,例如1988-04-15,而不是服务端传过来的原始字符串格式 -- Fri Apr 15 1988 00:00:00 GMT-0700 (Pacific Dayli