• 学习笔记一


    一.作用域

    对象:是由函数名(键名)和属性值(键值)组成的数据

    JS的执行顺序:

    1.语法分析

    ​ 查找出语法错误

    2.预编译

    1. 生成AO(Activation Object)对象 {} ==

    2. 形参和变量作为AO对象的键名(属性名),属性值是undefined

    3. 实参赋值给形参

    4. 函数声明作为AO对象的函数名,把函数作为键名赋值给这个属性名

    3.执行JS代码


    作用域==>JS代码执行的环境

    1.作用域

    • 所有在script标签里面的代码,全都处在全局作用域中
    • 全局作用域在页面打开时创建全局对象GO(window对象),页面关闭时销毁GO对象、
    • 全局作用域中的变量是GO对象的属性名,变量的值是GO对象的属性值

    2.函数作用域

    • 所有在函数里面的代码,都处在函数作用域中
    • 函数作用域在函数执行时创建AO对象,在函数结束时销毁AO对象
    • 函数作用域中的变量是AO对象的属性名,变量的值是AO对象的属性值
    • 当下一次执行函数时,会创建全新的AO对象

    二.闭包&&自执行函数

    闭包的用处:

    1. 实现累加值==》对父级函数内部变量的操作
    2. 可以做缓存
    3. 构建模块化实例
    4. 私有化变量

    什么是闭包:

    ​ 当内部函数被保存在外部时,由于内部函数的作用域链上存在内部函数创建时的环境(即父级函数和祖先函数的AO对象,全局对象GO),导致内部函数可以顺着作用域链寻找变量,所以形成了闭包,同时内部函数的作用域链上(即父级函数和祖先函数的AO对象,全局对象GO)无法被垃圾回收机制回收,导致了内存泄漏。


    函数声明转换成函数表达式

    第一种

    	(function()
    	{
    	console.log(1)
    	})(/*函数表达式外加一个括号就可以运行*/)
    
    	(function()
    	{
    	console.log(1)
    	}(/*括号写在里面也可以运行*/))
    

    第二种

    	!function()
    	{
    	console.log(1)
    	}
    

    第三种

    	~function()
    	{
    	console.log(1)
    	}
    

    第四种

    	+function()
    	{
    	console.log(1)
    	}
    

    第五种

    	-function()
    	{
    	console.log(1)
    	}
    

    立即执行函数==》一次性函数

    特点:只执行一次,在函数执行结束后,整个函数从内存中销毁,不占据内存空间

    	(function init(a,b,c){
    	return a+b+c
    	})(2,3,4,)
    

    三.对象初探

    例子:

    	var obj={
    	name :'heaven',
    	age:18,
    	sex:'male'
    	}
    
    • 标准对象是由很多对键值组成的,每队键值用逗号隔开;
    • 在控制台中对象是按照先0-9再a-z来排序的;
    • 对象的键名一定是字符串,属性值是任意数据类型(即无论在键名位置输入数据都会转换成字符串类型);

    对象的增添改查:

    	obj['height']='18厘米'//添加键名
    	obj.height='18厘米'//添加键值值
    	delete obj.height//删除键值
    	obj.height='8厘米'//改变键值
    	obj.height//查询键值
    

    遍历对象的方式

    	for (var key in obj)
    	{
    	console.log(key,obj[key]);
    	}
    
    

    四.字符串的常用方法

    字符串的常用方法

    	var str='hello'
    	str.charAt(索引值)//获取字符串索引位置的字符
    	str.charCode(索引值)//获取字符串索引位置的字符的Unicode编码(0:48   a:97   A:66)
    	var a =String.fromCharCode(Unicode编码)//用Unicode编码来查到对应的字符
    	str.toUppercCase()//把字符串变大写,返回的是一个新的字符串,没有改变原来的字符串
    	str.toLowerCase()//与toUpperCase相对变小写,返回的是一个新的字符串,没有改变原来的字符串
    	str.indexOf(字符)//从左到右查询,返回字符在str中的位置,如果返回的值是-1,就说明字符不在str中
    	str.lastIndexOf(字符)//从右到左,返回字符在str中的位置,如果返回的值是-1,就说明字符不在str中
    	
    

    模拟JS自带的toUpperCase

    1. 遍历字符串

    2. 判断如果是小写字母就变大写

    3. 把结果抛出来

      	function myUpper(target){
      		var newStr='';
      		for(var i=0;i<target.length;i++)
      		{
      			var charCode=str.charCodeAt(i);//储存每个字母的字符编码
      			if(charCode>=97&&charCode<=122)//判断每个字符是不是小写
      			{
      				newStr+=String.fromCharCode(charCode-32)
      			}
      			else
      			{
      				newStr+=target[i];
      			}
      		}
      		return newStr;
      	}
      	myUpper(str);
      

    字符串的截取

    	var str='hello'
    	str.substr(n,m)//从索引n开始截取m个字母
    	
    	str.slice(n,m)//从索引n开始截取m-n个字母,支持负值索引(最后一个字母是-1,往前数-2,-3,等等)
    	str.substring(n,m)//从索引n开始截取m-n个字母,不支持负值索引
    	str.split(字符)//用指定的字符来分割字符串
    	(如:str.split(e)   结果:['h','llo'])
    	str.replace(x,y)//用x来代替原字符串中的y
    

    去除字符串中的空格

    	str.trimLeft()//去除字符串开始的空格
    	str.trimRight()//去除字符串结束的空格
    	str.trim()//去除字符串开始和结束的空格
    

    合并字符串

    	str.concat(字符)//将指定字符或字符串合并到原字符串的尾部
    

    ++++

  • 相关阅读:
    bzoj1731 [Usaco2005 dec]Layout 排队布局
    loj10087 Intervals
    差分约束小结
    bzoj1112 [POI2008]砖块Klo
    bzoj3524 [POI2014]Couriers
    poj2752 Seek the Name, Seek the Fame
    1027C Minimum Value Rectangle
    bzoj2212 [POI2011]Tree Rotations
    bzoj3747 [POI2015]Kinoman
    628D Magic Numbers
  • 原文地址:https://www.cnblogs.com/ww-523-99/p/13616363.html
Copyright © 2020-2023  润新知