发表于: 2019-11-20 23:02:20
1 1067
今日完成:
js中,一般固定值称为字面量
字面量可以是数字,字母,,数字可带可不带,字母,必须带引号,一串字母,就叫字符串
总结:就是一个具体的值,可以是变量的具体值,可以是函数的值,也可以是对象的值
数组(Array)字面量 定义一个数组:
[40, 100, 1, 5, 25, 10]
对象(Object)字面量 定义一个对象:
{firstName:"John", lastName:"Doe", age:50, eyeColor:"blue"}
函数(Function)字面量 定义一个函数:
function myFunction(a, b) { return a * b;}
/-------------------
var x=123
var是声明变量,var x就是一个变量,123是数字字面量也是变量x的值,
变量是一个名称。字面量是一个值。
变量相当于一个储存值的容器,或者固定值的名字,方便调用
值(字面量)
----------------------------------------------------------------
变量可以通过变量名访问。在指令式语言中,变量通常是可变的。字面量是一个恒定的值.
可以直接调用x,来调用它的值ex:123
总结:123是固定的,但是x是可变的,一定情况下,x的值可能变为另一个字面量
------------------------------------------------------------------------------------
变量主要储存的是文本值(又叫字符串)和数值(数字)
当为变量分配文本值时,需要加引号,当为变量分配数值时不需要加引号,否者数值会被作为文本来处理
创建变量又称声明变量,关键词var,关键词不能用作创建类名
变量声明后,值是空的,需要用等号向变量赋值,也可以在声明时直接赋值
ex:
var abab;
abab="啦啦啦";
相当于:var abab="啦啦啦";
文本就是值
调用:var abab="啦啦啦";
document.getElementById("demo").innerHTML=abab;
变量名不用加引号,否者会被识别为文本,直接输出变量名,而不是文本值
可以一次声明多个变量,中间用逗号隔开,用分号结尾
ex:var x=1,y=2,z=3;
也可以垂直写
var x=1,
y=2,
z=3;
也可以多个变量附一个值var x,y,z=5;但是
显示为:undefinedundefined5,x,y值为:undefined(未定义)意思为是变量,但不含有值(空变量)
/-------------------------------------------------------------------------------------------------------------
JavaScript 代码是 JavaScript 语句的序列。
浏览器按照编写顺序依次执行每条语句。
----------------------------------------------
JavaScript 代码块:
JavaScript 可以分批地组合起来。代码块以左花括号开始,以右花括号结束。代码块的作用是一并地执行语句序列。
--------------------------------------------------------------------------------------------------------------------------
总结:js语句可能失效的一些情况.
1.结合id的唯一性,当使用id绑定对象的时候,如果html标签有两个相同id,只有第一个生效,第二个还是原本的代码
假如js语句中,有两个相同的id,那么就按顺序,第二个js语句,覆盖第一个js语句
ex:
<p id="demo">html段落一</p>
<div id="myDIV">html段落二</div>
<div id="myDIV">html段落三</div>
<script>
document.getElementById("demo").innerHTML="js语句一";
document.getElementById("myDIV").innerHTML="js语句二";
document.getElementById("myDIV").innerHTML="js语句三";
</script>
显示:

2.html标签中没有与id对应的js语句,就输出原本的内容,对全局没有影响,js语句段中(不是代码块,而是同一<script>标签下的js语句),js语句id没有对应的html标签id,
子这个js语句本身,及它以下的js语句全部失效,对于它之上的js语句无影响
3.在单独的js语句块中,同2一样,
4.同一标签下有两个相同js代码块
ex:
<script>
function myunction(){
document.getElementById("myPar").innerHTML="1";
document.getElementById("myDiv").innerHTML="2";
}
function myFunction(){
document.getElementById("myPar").innerHTML="3";
document.getElementById("myDiv").innerHTML="4";
}
</script>
包含1,2的js代码块,是完全无效的,被包含3,4的代码块覆盖,哪怕3,4代码块无效,html也是输出原本内容,与1,2无关,
或者,1,2代码中有造成js语句段失效的任何行为,也只与1,2本身有关,影响不到3,4语句段,剩下的总结,同3
原因:JavaScript 是脚本语言。浏览器会在读取代码时,逐行地执行脚本代码。而对于传统编程来说,会在执行前对所有代码进行编译。
5.在编辑js代码时,直接用回车对j代码的输出内容进行换行,会造成整个代码段得失效(1.不管是第几行的内容,只要直接换行都会造成整段的失效2.仅仅是本段语句段失效,)
代码内容换行,必须在换行前加反斜杠\
ps:
1.整段就说<script>没有{}就整个<script>标签,有整段就相对于{},对其他的{}无影响
2.代码的换行,不会作用与输出,即:输出不会换行
3.内容中直接输入的空格默认一个,其他被忽略
/--------------------------------------------------------------------------------------------------------------------------------------
值得类型(数据类型)
基本类型:字符串(String)、数字(Number)、布尔(Boolean)、对空(Null)、未定义(Undefined)、Symbol。
引用数据类型:对象(Object)、数组(Array)、函数(Function)。
都可以作为变量的值引用,区别在于,基本值是静态的,引用值(引用数据类型)是动态的
ps:数组下标是基于零的,所以第一个项目是 [0],第二个是 [1],以此类推
(这是定死的规则无法改变)
/
JavaScript 变量均为对象。每声明一个变量时,就创建了一个新的对象
对象由花括号分隔。在括号内部,对象的属性以名称和值对的形式 (name : value) 来定义。属性由逗号分隔:
为对象(变量)设置属性,多个值
ex:var box={height:"100px",width:"100px",color:"red",};
为一个对象盒子设置长宽和颜色,中间用都逗号隔开
对象,不用dom树绑定,输出方式
var person=
{
firstname : "John",
lastname : "Doe",
id : 5566
};
(两种)
document.write(person.lastname + "<br>");
document.write(person["lastname"] + "<br>");
调用的时对象中的某个具体的属性的值,用对象名(变量名)加上.属性名/加上["属性名"]来调取,对像名为xxx它包含的属性名的具体值,然后输出
/
函数是由事件驱动的或者当它被调用时执行的可重复使用的代码块。
函数就是包裹在花括号中的代码块,前面使用了关键词 function:
JavaScript 对大小写敏感。关键词 function 必须是小写的,并且必须以与函数名称相同的大小写来调用函数。
ex;
function 函数名称()
{
// 执行代码
}
当调用该函数时,会执行函数内的代码。
总结:函数和变量的关系
var aa声明一个变量,变量名为aa
function bb(){}声明一个函数,函数名bb,调用时,写成bb(),()里面可以添加形参
函数可以作为变量的值,变量也可以作为函数执行代码的一部分(即函数的参数)(分全局变量和局部变量)
定义一个函数就像定义一个可执行的特殊变量
在标签中填写 onclick 事件调用函数时,不是 onclick=函数名, 而是 onclick=函数名+(),
-----------------------------------------------
通过使用 return 语句就可以 将值返回调用它的地方
在使用 return 语句时,函数会停止执行,并返回指定的值。
在 JavaScript 函数内部声明的变量(使用 var)是局部变量,所以只能在函数内部访问它。(该变量的作用域是局部的)。
在函数外声明的变量是全局变量,网页上的所有脚本和函数都能访问它。
非严格模式下给未声明变量赋值创建的全局变量,是全局对象的可配置属性,可以删除。
-------------------------------------------------------------------
遇到问题:
var x=document.getElementById("intro");
x=document.getElementById("intro")
有声明的变量和没有声明的变量有什么区别?
解决:
1.
var x是声明x是一个变量,变量是一个名称,等号赋值,而document.getElementById("intro")是它的值
x=是等于号直接为x赋值,x的值是document.getElementById("intro"),没有声明x是个变量
2
Js中的变量声明的作用域是以函数为单位,所以我们经常见到避免全局变量污染的方法是
在函数内部,有var和没var声明的变量是不一样的。有var声明的是局部变量,没var的,声明的全局变量,所以可以借此向外暴露接口东东。
在全局作用域内声明变量时,有var 和没var看起来都一样,声明的全局变量,就是window的属性,通过ECMAScrpit5提供的属性的特性查询方法,来发现之间的区别。
也就是通过变量var声明全局对象的属性无法删除,并且发现和函数声明创建的全局对象属性也无法删除。
即:非严格模式下给未声明变量赋值创建的全局变量,是全局对象的可配置属性,可以删除。
但一般还是应该遵守规则声明
ex:
1.var carName = " Volvo";
// 此处可调用 carName 变量
function myFunction() {
// 函数内可调用 carName 变量
}
2.// 此处可调用 carName 变量
function myFunction() {
carName = "Volvo";
// 此处可调用 carName 变量
}
/
变量中包含函数,函数作为一个值
var aaa{
sadas:"asda",
sasa:"dada",
id:121
函数名(在前):function(声明)
{
可以直接调用变量的属性+(连接作用不显示)"函数中的内容";
}
}
document.getElementBYIddish("id名").innerHTML(输出)=变量名.函数名();
/
调用函数可以传递任意参数,由逗号(,)隔开,声明函数时,把参数当做变量来声明,顺序要一致,
总结:
相当于调用的函数名中(),后面的括号中放实参,
js语句声明的变量名()中放形参,形参实参一一对应
,在语句中调用形参,输出对应的形参,形参名不需要引号,其他输出内容根据字母和数字考虑加不加引号,中间用加号(+)连接,之后带分号
ex:
<script>
function myFunction(name,job){
alert("Welcome " + name + ", the " + job);
}
</script>
/
数组
数组对象是使用单独的变量名来存储一系列的值。
数组可以用一个变量名存储所有的值,并且可以用变量名访问任何一个值。
数组中的每个元素都有自己的的ID,以便它可以很容易地被访问到。
1.
var myCars=new Array();//一个没有内容的空数组,定义时赋初值
myCars[0]="Saab";
myCars[1]="Volvo";
myCars[2]="BMW";
2.
var myCars=new Array("Saab","Volvo","BMW");
3.
var myCars=["Saab","Volvo","BMW"];
访问myCars数组的第一个值:
var name=myCars[0];
修改数组 myCars 的第一个元素:
myCars[0]="Opel";
/
可以通过将变量的值设置为 null 来清空变量。
ps:可能用来js任务一停止闪
/
++自增,x++,即x+1
x=y++ ,x=5,y=6
x=++y,x=6,y=6
开始任务1
做出初始九宫格
收获:
如上,算是把js知识初步分开,不会混淆在一起了,
然后就是学习怎么把它们组合在一起了
遇到问题:
1.怎么把js语句跟九个方格联系起来,用id,还是函数数组
2.连接起来,又怎么九个选三个,然后这三个颜色还要再随机
明日计划:
解决上述问题,尽量完成js任务一
评论