[心得] JavaScript权威指南学习笔记

本文介绍了JavaScript的基础知识,包括变量、数据类型、对象与数组的操作,以及函数的定义与使用等,并提供了丰富的示例代码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

JS作为5大语言之一,在前端领域应用广泛。

当学习一门新的编程语言时,应当对照书中示例,边学边做,反复演练以加深理解。

JS中两种最重要的数据类型是对象和数组。

对象是名值对的集合,或者字符串到值的映射的集合。

数组是以数字为索引的列表。

当函数和对象合写在一起时,函数就变成了方法。

自定义方法,this关键字是对定义方法的对象的引用。
按惯例,构造函数均首字母大写。
jQuery代码非常易于识别,因为它多次利用一个$()的函数。

以下是一些基本的JS示例

var x;
x = 0;
x

x = 1;
x = 0.01;
x = "Hello World;"

x = 'JavaScript';
x = true
x = false;
x = null;
x = undefined;

var book = {
    topic: "JavaScript";
    fat: true
};

book.topic;
bock["fat"];
book.author = "Flanagan";
book.contents = {};

var primes = [2, 3, 5, 7];
primes[0];
primes.length;

primes[primes.length - 1];
primes[4] = 9;

var points = {
    {x:0, y:0},
    {x:1, y:1}
};

function plus1(x){
    return x+1;
}

points.dist = function(){
    var p1 = this[0];
    var p2 = this[1];
    var a = p2.x - p1.x;
    var b = p2.y - p1.y;
    return Math.sqrt(a*a + b*b);
};

function abs(x) {
    if (x>=0){
        return x;
    }
    else {
        return -x;
    }
}

function factorial(n) {
    var product = 1;
    while(n>1){
        product *= n;
        n--;
    }
    return product;
}

function factorial2(n){
    var i, product = 1;
    for(i=2; i<=n; i++){
        product *= i;
    }
    return product;
}


function debug(msg) {
    var log = $("#debuglog");
    if (log.length == 0) {
        log = $("<div id='debuglog'><h1>Debug Log</h1></div>");
        log.appendTo(document.body);
    }
    log.append($("<pre/>").text(msg));
}
Math.pow(2,3)
Math.round(.6)
Math.ceil(.6)
Math.floor(.6)
Math.abs(-5)
Math.max(x,y,z)
Math.min(x,y,z)
Math.random()
Math.PI
Math.E
Math.sqrt(3)
Math.log(10)

var then = new Date(2016,11,14);
var later = new Date(2016,11,14,20,55,11);
var now = new Date();
var elapsed = noew - then;
later.getFullYear()
later.getMonth()
later.getDate()
later.getDay()
later.getHours()
later.getUTCHours()

var s = "Hello, JavaScript";
s.charAt(0)
s.charAt(s.length-1)
s.substring(1,4)
s.slice(1,4)
s.slice(-3)
s.indexOf('J')
s.lastIndexOf('J')
s.split(',')
s.replace('h', 'H')
s.toUpperCase()

var text = "testing: 1, 2, 3";
var pattern = /\d+/g
pattern.test(text)
text.search(pattern)
text.match(pattern)
text.replace(pattern, '#')
text.split(/\D+/);

JS语言标准ECMAScript,简称ES
JS区分大小写,HTML不区分大小写,JS在多数情况下忽略程序的空格和换行符。

直接量就是程序中的直接数据值。

数字不能首字符出现在变量名中。

只有在缺少了分号就无法正确解析代码的情况下,JS才会自动补分号。

涉及return,break和continue,以及++,–运算符时不能断行。

JS的数据类型分为原始类型和对象类型。原始类型包括数字,字符串和布尔值。

JS变量是无类型的,JS不区分整数值和浮点数。

考虑兼容性,最好不要使用以哦为前缀的整型直接量。

Js中算术运算在上溢和下溢或被0整除是不会报错,而是返回正或负的Infinity。0除0,结果不是一个数NaN。

Js中非数字值和它自身都不等。

RegExp是正则表达处理模块。

对null执行typeof运算。结果返回object,可认为null是一个特殊对象值,含义是非对象。

用来定义的值表示更深层次的空值。undefined是预定义的全局变量。它的值是未定义。
给变量或属性赋值,给函数传参,最佳选择是null。

全局对象应该当作保留字来看待。
全局属性:undefined,Infinity,NaN
全局函数:isNaN(),ParseInt(),eval()
构造函数:Date(),RegExp(),String(),Object(),Array()
全局对象:Math,JSON

var s = “text”;
s.len =4;
var t = s.len;
t的值为undefined,因为临时字符串随即被销毁。

undefined,null,布尔值,数字和字符串是原始值,原始值不可更改,原始值的比较是值的比较,对象的比较是引用比较。当引用同一对象时,才相等。

所有对象继承了两个转换方法:toString()和valueOf()

===也称严等,用来检测两个操作数是否严格相等,==允许类型转换。

eval()是一个函数,但它已被当成运算符来对待。

eval()只有一个参数,如果传入非字符串,它直接返回该参数,否则把字符串当JS代码解析。
关于eval()最重要的是,它调用它的变量作用域环境。

delete是一元操作符,用来删除对象属性或数组元素。

void用来忽略操作数的值。常用在客户端的URL中。

throw expression;抛出异常,用try/catch/finally进行捕获异常。

with语句用于临时扩展作用域,不推荐使用。

debugger用来产生一个断点。

use strict;严格模式
主要3点:
1. 禁止with
2. 变量先声明
3. 调用函数中的一个this值是undefined,而非严格模式中,this总是一个全局对象。

empty相当于python的pass

原型继承是JS的核心特征。

对象最常用的用法是创建,设置,查找,删除,检测和枚举它的属性。
对象直接量是由若干名值对组成的映射表。
new运算符是由若干名值对组成的映射表。

没有原型的对象不多,Object.prototyp就是其一,它不继承任何属性。
通过原型继承来创建对象。

var o3 = object.create(object.prototype);

extend()函数把一个对象的属性复制到另一个对象中,只简单复制属性名和值,没有复制属性的特性,也没有复制存取器的getter和setter方法。

对象3属性:原型,类,和可扩展性。

toLocaleString()返回一个表示这个对象的本地化字符串。

Js并不真正支持多维数组。


Array.join()
Array.reverse()
Array.sort()
Array.concat(4,5)
Array.slice()
Array.splice() //插入或删除元素的通用方法
Array.push()
Array.pop()
Array.unshift()//当多个参数时,整体一次性插入
Array.shift()

forEach()方法从头到尾遍历数组,没有for循环的break,必须借助异常.

map()将调用的数组的每个元素传递给指定的函数,并返回一个数组,它包含该函数的返回值.

filter()方法进行过滤

every()类似所有
some()类似存在

reduce()和reduceRight()使用指定的函数将数组元素进行组合,生成单个值.
indexOf()
lastIndexOf()

JS函数可以嵌套在其他函数中定义,并访问它们宿主函数作用域中的任何变量.

任何函数只要作为方法调用,实际上都会传入一个隐式实参this.

当方法的返回值是一个对象,则可以调用它的方法.这种方式称为链式调用.

可变实参列表用arguments参数,它并非真正数组,而是一个实参对象.

callee指代当前正在执行的函数,caller指代调用者.

JS中函数并非原始值.而是一种特殊对象.

函数对象可以通过作用域链相互关联起来,函数体内部的变量都可以保存在函数作用域内,这种特性称为闭包.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值