javascript高级程序编程-学习笔记(基础)

本文详细介绍了JavaScript的基础语法、数据类型、控制流语句及函数等核心内容,并深入探讨了变量作用域、内存管理问题以及面向对象编程的相关知识点。

1.js实现

js诞生:为了验证字段是否输出(前期)

1.1分类

Esmascript,Dom,Bom

语法,类型,语句,关键字,保留字,操作符,对象

2.script

async 立即下载
charset 字符集
defer 文档完全解析后执行
src 外部文件
type 脚本语言的内容文件
2.1 嵌入式代码与外部文件(可维护,缓存,适应未来)
2.2 文档模式:混杂,标准
2.3 浏览器不支持脚本时候显示

3.语法,数据类型,控制流语句,函数

3.1 语法
1.区分大小写
2.标识符(驼峰大小写)
3.注释 // /* */
4.严格模式 ‘use strict’
5.语句 (代码块,看起来清晰)
3.2 关键字,保留字
3.3 变量(松散型)
1.var message; undefined
2. function test(){
    var message = 'hi'; //局部变量 test(); alert(message);//错误,变量再函数退出后被销毁
}
3. function test(){
    message = 'hi'; //全局变量 可以任何地方被引用,不推荐
}
3.4 数据类型

undefined,null,Boolean, Number, String,Object

1.typeof 操作符
2.Undefined,(var声明未进行初始化)

var message; //尚未定义也是,不过打印会报错

3.Null 类型(对象空指针 typeof(Object)

保存对象的变量还没有真正保存对象,就应该明确让变量保存null值

4.Boolean 类型 true false
Boolean          true               false
String           任何非空字符串     ""
Number           任何非空字符串     0和NaN
Object           任何对象           null
Undefined        n/a                undefined
5.Number
5.1 浮点数值
5.2 数值范围
Number.MIN_VALUE 5e-324
Number.MAX_VALUE 1.79766931348623157e+308
5.3 NaN (数值) (Not a Number)
本来要返回数值的操作未返回数值
isNaN(函数)
5.4 数值转换
Number()  可用于任何类型(null(0) undefined(NaN) 字符串(“”=0,无数字=NaN)
5.5 String类型
字符字面量 /n 换行 \t 制表 /r 回车
length 属性
toString() 方法null,undefine没有这个方法 
6. Object 类型
constructor (构造函数)
hasOwnproperty(propertyName) 检测属性
isPrototypeof(object) 检测原型
toLocalString() 返回对象字符串表示
toString()
valueOf 返回对象的字符串,数值或布尔值通常与toString返回相同
3.5 操作符
3.6 语句 if do while while for for in
3.7 函数

理解参数arguments
没有重载

4.变量 作用域 和 内存问题

4.1 基本类型和引用类型的值

基本类型:Undefined,Null,Boolean,Number,String
引用类型:对象

4.1.1 动态的属性(可添加属性)
4.1.2 复制变量值 (指针指向通一个堆中)
4.1.3 传递参数*
基本类型值的传递如同基本类型变量的复制一样,
引用类型值的复制,如同引用变量类型变量复制一致
4.1.4 检测类型
typeof
instanceof(object, Array, RegExp)
4.2 执行环境以及作用域
4.2.1 延长作用域链
4.2.2 没有块级作用域
4.2.3 垃圾收集

5.引用类型(属性&方法)

5.1 Object类型
var person = new Object();
var person = {name:'a'}

person['name']
person.name
5.2 Array 类型
5.2.1 检测数组
if(value instanceof Array)
if(Array.isArray(value)) ie9+
5.2.2 转换方法
tolocaleString()
toString() //字符串
valueof()  //数组

toString() ,分割
join() 也可以使数组变成字符串,分割方式自定义
5.2.3 栈方法
push pop
5.2.4 队列方法 LIFO
shift push
取得第一个元素 改变数组
5.2.5 重排序 reverse() sort()
5.2.6 操作方法
concat() 合并
slice() 0 开始
splice() most powerful
5.2.7 位置方法
indexOf lastIndexOf
从0开始找,
-1没有找到
5.2.8 迭代方法
every filter forEach map some 
true          没有返回
false
5.2.9 缩小方法
reduce()
reduceRight()
5.3 Date类型
var now = new Date();
Date.UTC()
5.4 RegExp类型
g全局 i不区分大小写 m多行
var pattern = //
pattern.test()
5.5 Function 类型
5.5.1 没有重载(深入理解)
5.5.2 函数声明与函数表达式

函数声明:变量提升
函数表达式:变量不提升

5.5.3 作为值的函数
5.5.4 函数内部属性

arguments this

this 当在网页的时候全局作用域中
调用函数时,this对象引用的就是window

arguments.callee.caller

5.5.5 属性和方法
length 函数希望接受的命名参数的个数
prototype
apply 数组 arguments
call 设置函数体的this对象的值
bind() IE9+

扩充函数赖以运行的作用域
对象不需要与方法有任何耦合关系

5.5.6 基本包装类型

引用类型与基本包装类型的主要区别就是对象的生存值

Boolean 类型 建议永远不用使用Boolean对象
对象 true
Number 类型 Number对象是Number类型的实例
String 类型
  字符方法 charAt() charCodeAt()
  字符串操作方法 concat() 拼接
                 slice() 
                 substr()
                 substring()

  字符串位置方法 indexOf lastIndexOf
  trim方法 删除前置以及后缀所有空格
  大小写转换 toLowerCase()
             toUpperCase()
  字符串的模式匹配方法 match() replace()
  localeCompare()
  fromCharCode()
  HTML方法 encodeURI() eval()
  Math 对象 min() max()
  ceil() floor() round() random()

6.面向对象的程序设计

6.1 属性类型
6.1.1 数据属性
configurable 能否delete
enumerable 能否for in返回属性
unitable 能否修改属性
value 默认undefined
Object defineProperty(person, "name"{
    writable: false, 
    value : 'cc'
})
6.1.2 访问器属性

getter setter
读取属性的特性
getOwnpropertyDescriptor()

6.2 创建对象
6.2.1 工厂模式
function createPerson(name, age,job){
    var o = new Object()
    o.name = name;
    o.age = age;
    o.job = job
    return o;
}
6.2.2 构造函数模式
function Person(name, age, job){
    this.name = name;
    this.age = age;
    this.job = job;
    this.sayname = function(){
        alert(this.name)
    }
}
6.2.3 原型模式
function Person(){
}
person.prototype.name = '';
person.prototype.age = 29;
6.3 继承
function inheritPrototype(subType, superType){
    var prototype = Object(superType);
    prototype.constructor = subType;
    subType.prototype = prototype;
}

7.函数表达式

hi();
function hi(){ //提升
    
}
7.1 递归
7.2 闭包
有权访问另一个函数作用域中的变量函数(能够读取其他函数内部变量的函数)函数内部与函数外部连接起来的桥梁

转载于:https://www.cnblogs.com/caijw/p/7405355.html

内容概要:本文系统介绍了算术优化算法(AOA)的基本原理、核心思想及Python实现方法,并通过图像分割的实际案例展示了其应用价值。AOA是一种基于种群的元启发式算法,其核心思想来源于四则运算,利用乘除运算进行全局勘探,加减运算进行局部开发,通过数学优化器加速函数(MOA)和数学优化概率(MOP)动态控制搜索过程,在全局探索与局部开发之间实现平衡。文章详细解析了算法的初始化、勘探与开发阶段的更新策略,并提供了完整的Python代码实现,结合Rastrigin函数进行测试验证。进一步地,以Flask框架搭建前后端分离系统,将AOA应用于图像分割任务,展示了其在实际工程中的可行性与高效性。最后,通过收敛速度、寻优精度等指标评估算法性能,并提出自适应参数调整、模型优化和并行计算等改进策略。; 适合人群:具备一定Python编程基础和优化算法基础知识的高校学生、科研人员及工程技术人员,尤其适合从事人工智能、图像处理、智能优化等领域的从业者;; 使用场景及目标:①理解元启发式算法的设计思想与实现机制;②掌握AOA在函数优化、图像分割等实际问题中的建模与求解方法;③学习如何将优化算法集成到Web系统中实现工程化应用;④为算法性能评估与改进提供实践参考; 阅读建议:建议读者结合代码逐行调试,深入理解算法流程中MOA与MOP的作用机制,尝试在不同测试函数上运行算法以观察性能差异,并可进一步扩展图像分割模块,引入更复杂的预处理或后处理技术以提升分割效果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值