发表于: 2019-11-30 23:52:26

1 898


今日完成:

1.JS有哪些数据类型和常用方法?
两种类型:
基本数据类型有这五种:Undefined、Null、String、Number、
Boolean。
引用类型有这几种:object、Array、RegExp、Date、Function、
特殊的基本包装类型(String、Number、Boolean)以及单体内置对象(Global、
  Math)
--------------------------------------------------------------------------------------
基本类型:原始值 stack 栈: : :原始值存在栈里面 栈的规则first in last out
先进去的最后一个出来
1.Number(包括整型和浮点型)
2.String(字符串)
3.Underfined(指的就是变量创建后但是没有赋值,而变量的默认值就 是undefined)
4.Boolean(布尔值)
5.Null(空对象)
6.Object(对象)
1、Number
1.Number类型Number类型包含整数和浮点数(浮点数数值必须包含一个小数点,且小数点后面至少有一位数字)两种值。NaN:非数字类型。
特点:① 涉及到的 任何关于NaN的操作,都会返回NaN   ② NaN不等于自身。isNaN() 函数用于检查其参数是否是非数字值。
2、String类型
String类型用于表示由零或多个16位Unicode字符组成的字符序列,即字符串。
字符串可以由双引号("")和单引号('')来表示。但是要和前面一致,保持代码规范,
引号中的字符串可以是任何内容,文字、英文、数字,String 对象的 length 属性声明了该字符串中的字符数.
3、Underfined
只有一个值,即undefined值。使用var声明了变量,但未给变量初始化值,那么这个变量的值就是undefined。
4、Boolean布尔值
Boolean类型是Javascript中使用最多的一种类型,该类型只有两个值,true和false。
5、Null(空对象)
Null是第二个只有一个值的数据类型,这个特殊的值是null。从逻辑角度来看,null表示一个空对象指针。
而这也正是使用typeof操作符检测null值会返回"object"的原因。
6、Object类型
Jvascript中的对象其实就是一组功能和数据的集合。对象可以通过执行new操作符后跟要创建的对象类型的名称来创建。
而Objert类型的实例并为其添加属性和(或)方法,就可以创建自定义对象。
引用类型:引用值 heap堆: : :引用值大致可以说存在堆里面是通过指向来
引用Object类型:带有属性和方法的特殊数据类型。【Object 类型】
创建 Object 实例的方式有两种,一种是使用 new 操作符后跟 Object
Array:构造函数另外一种是使用对象字面量表示法:Array是使用单独的变量名来存储一系列的值。
Function:函数类型在JavaScript中也是对象
-----------------------------------------------------------------------------------------
Null和Undefined的区别?
null和undefined基本同义,只有一些细微的差别。
null表示“没有对象”,即该处不应该有值。
(1) 作为函数的参数,表示该函数的参数不是对象。
(2) 作为对象原型链的终点。
undefined表示缺少值,此处应该有值,但是还没有定义。
(1)变量被声明了,但没有赋值时,就等于undefined。
(2) 调用函数时,应该提供的参数没有提供,该参数等于undefined。
(3)对象没有赋值的属性,该属性的值为undefined。
(4)函数没有返回值时,默认返回undefined。
--------------------------------------------------------------------------------------------------------------------------------
NaN是什么?
NaN表示一个元素可不是数值,isNaN()用于判断元素是否为数字的函数,是的话返回false,不是数字返回true。
NaN和任何值比较都不相等。
----------------------------------------------------------------------------------------------------------------------------

什么是栈内存,什么是堆内存,两者有什么区别?
栈内存:由程序自动向操作系统申请分配以及回收,速度快,使用方便,但程序员无法控制。
若分配失败,则提示栈溢出错误。ps:const局部变量也储存在栈区内,栈区向地址减小的方向增长。
堆内存:程序员向操作系统申请一块内存,当系统收到程序的申请时,会遍历一个记录空闲内存地址的链表,
寻找第一个空间大于所申请空间的堆结点,然后将该结点从空闲结点链表中删除,并将该结点的空间分配给程序。
分配的速度较慢,地址不连续,容易碎片化。此外,由程序员申请,同时也必须由程序员负责销毁,否则则导致内存泄露。
//----------------------------------------------------------------------------------------------------------------------------------
JavaScript中有几种声明变量的方式,都有什么区别?
JavaScript中有三种声明变量的方式:var、let、const
--------------------------------------------------------------------------------------------------------------------------------
1.var:最常用的声明变量关键字。
 定义的变量的时候,若没有初始化,不报错,会输出undefined。其值之后可以修改。
var可以用来声明全局变量,也可以声明局部变量,依据它们声明的位置
ps:全局变量:在函数外定义的变量;(注意:若没有使用关键字声明的变量,默认为全局变量。)作用域是整个代码文件。
ps:局部变量:在函数内定义的变量。作用域是当前的函数内部。
ex:
var b; //不报错。
console.log('var b; b); //输出undefined
b = 1; //赋初值
console.log('var b,外部赋值1); //b输出1
//在代码块里的情况
{
// console.log('var b,代码块的变量可以进入代码块内;b);//输出1
var b = 2; //重新定义
console.log('var b,重新赋值后); //b输出2
}
console.log('var b,重新赋值后在代码块外的值); //b输出2
//在函数里的情况
function varFun() {
console.log('var b,全局变量b); //b输出2
var b = 3; //局部变量b
console.log('var b,局部变量b); //b输出3,同时上一个输出undefined(具体原因,见文末)
var b2 = 33; //局部变量b2,在函数外获取不到值
b3 = 333; //全局变量b3,在函数外可以获取到值
}
varFun(); //执行函数
console.log('var b,函数执行后,函数外的b是全局变量b的值;);
// console.log('函数内var定义的变量b2=33,在外部获取不到;);//b2报错,b2 未定义。
console.log('函数内确实关键字定义的变量b3=333会被当做全局变量;); //b3输出333
------------------------------------------------------------------------------------------------------
2.let:块级作用域 。
在块级{}里面用let定义的变量,离开当前的块{}之后,就不能使用(有点像局部变量,但作用域不一样)。
ps:{...}一对花括弧就就是一个特定的代码块,包括直接的{},流程语句的{},函数的{},....。函数声明时本身就带有{},也是属于一个代码块。
ex:
var c = 11; {
let c = 12;
console.log('let c=12,b的值:', c); //输出12
}
console.log('代码块外c的值:', c); //输出11
----------------------------------------------------------------------------------------------------------
3.
const:用于声明常量。
ps:定义的变量的时候,必须同时初始化,且其值之后不可以修改。
ex:
const PI = 3.14;
// const a;//报错。没有赋初值。
console.log('const PI; ); //PI输出
// PI = 3.1415926;//报错。不能赋值给一个常量
-----------------------------------------------------------------------------------------
+=和=+的区别?
类似++y和y++
++y是先加再赋值,y++是先赋值再加
先是y=5,++y的是意思是y自己先加1,也就是y=y+1;++y 和 y++的区别是 ++y的结果是先算y自增,
表达式的结果是y(原来的y)+1。y++就是先算表达式的结果再算y本身的自增,表达式的结果是 y (原来的y),
两者相同的是都会对y+1。如果上面换成 x = y++的话结果就是5 ;
ex:
y=5,x=++y,x 等同于 y=5; y = y +1; x = y; x的结果是 6
y=5,x=y++,x 等同于 y=5; x = y; y= y + 1; x的结果是 5
----------------------------------------------------------------
ex:
x=1
x+=7等同于x=1+7结果:x=8
x=+7等同于x=7    结果:x=7(相当于重新赋值)
//----------------------------------------------------------------------------------------------------------------------------------
制作页面,又是不知道怎么做了,还是自己的方法,先分开做,再去联系
先制作输入框
显示:
修改默认样式
遇到问题:直接修改不起作用
原因:less语法嵌套错误,input type=“text”输入框是可以直接用css修改的(ex:长度,高度,背景颜色等)
ps:去除点击时出现的默认样式的蓝色边框:outline:none;
修改样式后显示:
遇到问题:
1.如何修改输入框内部的字体大小
2.如何限制输入框只有最多两位字符
3.如何限制输入框只有数字
解决:
1.在父元素中子元素设置的文本样式,影响不到input输入框中的字符,需要在input的css样式中重新设置想要的字符样式(大小,颜色等)
2.经过查找,需要用到maxlength属性
ex:<input type="text" id="id" maxlength="#" />
#是数字,代表输入框最大输入字符串的个数
3.经过查找,3种方法
1、onkeyup = "value=value.replace(/[^\d]/g,'')"
使用 onkeyup 事件,有 bug ,那就是在中文输入法状态下,输入汉字之后直接回车,会直接输入字母
2、onchange = "value=value.replace(/[^\d]/g,'')"
使用 onchange 事件,在输入内容后,只有 input 丧失焦点时才会得到结果,并不能在输入时就做出响应
3、oninput = "value=value.replace(/[^\d]/g,'')"
使用 oninput 事件,完美的解决了以上两种问题,测试暂时还没有出现其它问题。
//
扩展补充:对于方法的理解
例如:任务一toString(16);直接就把数字转换成16进制字符,
如果用函数写,就会有一堆的运行代码,所以可以把方法,理解为一些常用函数运算封装起来,并声明了一个公共名称
如下代码:
js方法分解:随意设置一个属性名,为属性添加目标函数为具体属性值,设置公共变量,添加这个属性,这个公共变量就是方法
ps:属性是同一类型的集合
遇到困难:
1.新东西,不知道从哪开头,从哪开始,速度就有点慢了
2.已经学到的东西,留在留有印象的程度,不能用自己的话详细描述,说明理解的太过表面
3.关于堆,栈,有看没有懂
收获:同上
最主要理解了方法的含义
明日计划:继续js任务2



返回列表 返回列表
评论

    分享到