javascript简要笔记,JavaScript读书笔记

发布时间:2022-11-17

本文目录一览:

  1. Javascript学习笔记 delete运算符
  2. 俺是javascript初学者 像高手请教谢谢
  3. JavaScript学习笔记之数组基本操作示例

Javascript学习笔记 delete运算符

一、语法

delete 后面的表达式必须给出一个属性的引用,例如:

var o = {a: 1};
delete o.a; // 此处 o.a 是对象 o 的属性 a 的引用

只有在 with 语句里才能使用单独的属性名:

with (o) {
  delete a;
}

二、delete 的返回值

delete 是普通运算符,会返回 truefalse。规则为:当被 delete 的对象的属性存在并且不能被删除时返回 false,否则返回 true。 这里的一个特点就是,对象属性不存在时也返回 true,所以返回值并非完全等同于删除成功与否。

var o = {a: 1};
delete o.a; // 返回 true
var b = 2;
delete b; // 返回 false,ECMA 规则约定:使用 var 和 function 声明的变量不可以被 delete

三、哪些情况下不允许 delete

上例提到的 varfunction 声明的变量不可以被 delete,但隐式声明可以被删除:

function c() { return 12; }
delete c; // 返回 false
d = function () { return 12; }
delete d; // 返回 true

不能 delete 从原型链上继承的属性,但可以删除原型链上的属性:

function Foo() {}
Foo.prototype.bar = 42;
var foo = new Foo();
delete foo.bar; // 返回 true,但并没有起作用
alert(foo.bar); // alerts 42,属性是继承的
delete Foo.prototype.bar; // 在原型上删除属性 bar
alert(foo.bar); // alerts "undefined",属性已经不存在,无法被继承

四、特例

eval 执行的代码中如有通过 varfunction 声明的变量,可以被 delete

eval("var a=1");
delete a;
alert(a); // 报未定义错误

如果声明是在 eval 执行代码中的闭包内进行的,则变量不能被 delete

eval("(function(){var a=1;delete a;return a;})()"); // 1

五、delete 数组元素

从数组中 delete 其元素并不会影响数组的长度:

var arr = ['yuyin', 'suhuan', 'baby'];
delete arr[0];
alert(arr.length); // alert 3

delete 的键值已经不属于数组,但却还是可以被访问,其值为 undefined

var arr = ['yuyin', 'suhuan', 'baby'];
delete arr[0];
alert(arr[0]); // undefined
arr[0] === undefined; // true

对比直接将键值赋值 undefined

var arr = ['yuyin', 'suhuan', 'baby'];
arr[0] = undefined;
alert(arr[0]); // undefined
arr[0] === undefined; // true

可以看出 delete 操作只是将键值这个属性从数组中删除了,数组本身也是对象,这个情况好理解的。如果需要保留键值,可以用 undefined 赋值。

俺是javascript初学者 像高手请教谢谢

% 求余

var a = 5;
var b = 7;
var c = b % a; // c 被赋值 b 模除于 a,这个时候 c 的值是 2(7 除以 5 余 2)

++ 自加

var a = 5;
a++; // 这个时候 a 自加,那么 a 的值现在是 6
// a++ 和 ++a 有区别,但是都能让这个变量自加 1

-- 自减

同自加。

== 等于【逻辑判断】

这个式子会返回真值,就是真 (true) 假 (false)。

var a = 3;
var b = 4;
var c = 3;
a == b // 3 不等于 4 返回的是 假
a == c // 3 等于 3 返回的是 真

=== 恒等于【逻辑判断】

这个式子在判断等于的基础上还判断这个变量的类型,初学者可以不掌握,但是要明白不一样。

!= 不等于【逻辑判断】

如果不等于就返回 真,等于就返回 假。 和 == 完全相反的返回值。

>、<、>=、<= 大于 小于 大于等于 小于等于【逻辑判断】

返回真值。

逻辑判断

  • 且 (and): &&
  • 或 (or): ||
  • 非 (not): !
表达式1 && 表达式2
// 当且仅当两个表达式均为真的时候,这整个式子返回 真,否则返回 假
// 全真才真,一假则假
表达式1 || 表达式2
// 当且仅当两个表达式均为假的时候,这整个式子返回 假,否则返回 真
// 全假才假,一真则真
!表达式
// 返回表达式真值的反面。如表达式为真,则返回假;表达式假则返回真。

这些逻辑判断符用在可以用真值的地方如 if 条件句:

if (真值表达式) {
  // 如果为真运行这个大括号里面的
} else {
  // 如果为假运行这个大括号里面的
}

ps:在 JS 中任何式子都可以做真值判断。0 为假,其他任何字符、对象、变量等都为真。


JavaScript学习笔记之数组基本操作示例

本文实例讲述了 JavaScript 学习笔记之数组基本操作。分享给大家供大家参考,具体如下:

一、数组定义

  1. 定义
var a = [1, 2, 3];
var a = new Array(1, 2, 3);
  1. 长度 返回长度:
var a = [1, 2, 3, 4, 5, 6];
alert(a.length);

设置长度:

var a = [1, 2, 3, 4, 5, 6];
a.length = 2;
alert(a);

二、数组连接

var a = [1, 2, 3];
var b = [4, 5, 6];
alert(a.concat(b));
alert(b.concat(a));

三、数组排序

sort() 函数: 默认情况是把数组元素按字符串排序。 例子 01

var arr = ['float', 'width', 'alpha', 'zoom', 'left'];
arr.sort();
alert(arr);

例子 02

var arr = [12, 8, 99, 19, 112];
arr.sort();
alert(arr);

例子 03(改进)

var arr = [12, 8, 99, 19, 112];
arr.sort(function(n1, n2) {
  return n1 - n2;
});
alert(arr);

四、数组连接

  1. 两个数组间的连接:concat()
var a = [1, 2, 3];
var b = [4, 5, 6];
alert(a.concat(b));
alert(b.concat(a));
  1. 数组元素间的连接:join()
var arr = [1, 2, 3, 4];
alert(arr.join('--p'));

五、数组元素添加、删除

  1. 数组尾部的添加、删除
  • 尾部添加:push(value)
var a = [1, 2, 3];
a.push(4);
alert(a);
  • 尾部删除:pop()
var a = [1, 2, 3];
a.pop();
alert(a);
  1. 数组头部的添加、删除
  • 头部添加:unshift(value)
var arr = [1, 2, 3];
arr.unshift(0);
alert(arr);
  • 头部删除:shift()
var arr = [1, 2, 3];
arr.shift();
alert(arr);
  1. 数组:splice()
  • 删除数据
var arr = [1, 2, 3, 4, 5, 6];
arr.splice(2, 3);
alert(arr);
  • 插入数据
var arr = [1, 2, 3, 4, 5, 6];
arr.splice(2, 0, 'a', 'b', 'c');
alert(arr);
  • 替换数据
var arr = [1, 2, 3, 4, 5, 6];
arr.splice(2, 2, 'a', 'b');
alert(arr);

感兴趣的朋友可以使用 在线HTML/CSS/JavaScript代码运行工具 测试上述代码运行结果。 更多关于 JavaScript 相关内容还可查看本站专题: