javascript学习笔记(一)

本文深入探讨JavaScript中的null和undefined概念,解析二者之间的区别,并通过实例演示如何使用typeof运算符进行区分。此外,还介绍了JavaScript中不常用的关键字new、delete以及with语句的使用场景。

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

我从我的其它博客中转载过来的学习记录。

看的书是 JavaScript The Definitive Guide 作者: David Flannagan

一、Null值

javascript的关键字null是一个很特别的“值”,它代表“没有值”。当然,从语言的技术上说,null是一个object类型的值,所以当一个变量的值是null时,你就应该说它不是一个合法的对象或者数组等。
C和C++程序员可能说javascript里的null和0是一样的,其实在某些特定的情况下也许null会转化为0,但它们的确是不同的,不要将它们搞混。

二、undefined

在自己编写javascript或者看别人的javascript代码时,你可能常常遇到"undefined"这样的字符串。其实当一个变量不存在;或者定义了但是还没有给它赋过值时;或者指向一个对象不存在的成员时,都会返回这个字符串。
它和null不同。在javascript里没有专门为未指定值的变量提供一个“undefined”关键字。所以我们写javascript代码时可能就在判断一个变量的值时有些困难。尽管"undefined"和null不同,但是通常情况下我们可以将它们等同对待。因为当我们写下面代码判断时:
my.prop == null
如果my.prop不存在或者它的值就是null时,那么返回结果为true。
在较新的浏览器里你可以较方便地区分undefined和null了。因为有typeof运算符可以使用了。typeof运算返回的是它的参数的类型。所以有如下的运算和等式:
type = typeof null; //type的值将为"object"。
/*当typeof的参数为未赋值的或者未定义的变量时,它就返回"undefined"*/
var a_undefined_varable;
type = typeof a_undefined_varable; //type的值将为"undefined"。
/*有趣的实践:*/
type = typeof typeof x; //不论x为什么,都将返回"string",所以type将为"string"。
-----注:typeof可以返回的值:"number", "string", "boolean", "object", "function",和 "undefined"
-----对于Array类型,也将返回"object",由此可以看出javascript是如何对待Array类型的。
-----其实你可以将typeof的参数的括号括起来使它看起来更像函数;或者来改变运算的优先级别:
-----var a=30, b=10;var type = typeof (a+b); //type的值将为"number"。

三、new 和 delete

在javascript里使用new 操作符可能对大家是经常的事儿。“但是在javascript里还有一个delete操作,你知道吗?当然它的作用可不是像在C++里时那样把它所占用的内存都清空,而是将对象从当前的命名空间里除去(注意在早期的javascript里是将对象赋值为null)。这样做是因为javascript自己有垃圾回收机制,它可以自动把无用的东西回收。”你可能想:“是这样的吗?”本人经过实际测试,认为当今主流浏览器(IE 7,firefox 2)都忽略delete运算。

四、with语句

如果你使用过delphi,你会很熟悉这样的语法。delphi中有unit和uses关键字来处理名字空间,在delphi程序中可以使用with来减少“编码”,增加可读性。在javascript里也有命名空间的概念,因些使用with语句也可以达到像在delphi中一样的效果。
with(Math) {
    x = sin(i * PI / 20);
    y = cos(i * PI / 30);
}
with(document) {
    write("<h2>hello from with</h2>");
}
内容概要:本文介绍了种利用元启发式算法(如粒子群优化,PSO)优化线性二次调节器(LQR)控制器加权矩阵的方法,专门针对复杂的四级倒立摆系统。传统的LQR控制器设计中,加权矩阵Q的选择往往依赖于经验和试错,而这种方法难以应对高维度非线性系统的复杂性。文中详细描述了如何将控制器参数优化问题转化为多维空间搜索问题,并通过MATLAB代码展示了具体实施步骤。关键点包括:构建非线性系统的动力学模型、设计适应度函数、采用对数缩放技术避免局部最优、以及通过实验验证优化效果。结果显示,相比传统方法,PSO优化后的LQR控制器不仅提高了稳定性,还显著减少了最大控制力,同时缩短了稳定时间。 适合人群:控制系统研究人员、自动化工程专业学生、从事机器人控制或高级控制算法开发的技术人员。 使用场景及目标:适用于需要精确控制高度动态和不确定性的机械系统,特别是在处理多自由度、强耦合特性的情况下。目标是通过引入智能化的参数寻优手段,改善现有控制策略的效果,降低人为干预的需求,提高系统的鲁棒性和性能。 其他说明:文章强调了在实际应用中应注意的问题,如避免过拟合、考虑硬件限制等,并提出了未来研究方向,例如探索非对角Q矩阵的可能性。此外,还分享了些实践经验,如如何处理高频抖动现象,以及如何结合不同类型的元启发式算法以获得更好的优化结果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值