1.在html中标签和属性名的命名规范?在javascript中?
在html中,标签和属性名可以大小写,建议小写。
在javascript中,一定要小写。
2.javascript中的数组和java的中的数组表现形式的区别?
在java中数组有三种表现形式,分别是
1.int[] arr = new int[2];arr[0]=1;arr[1]=2;
2. int[] arr={1,2,3};
3. int[] arr =new int[]{1,2,3}; //不可在前面多加个数,画蛇添足
- 在javascript中数组形式是
1.var arr = new Array(10);//指定数组个数是10个
2.var arr = new Array(5,2,3,4,"hello world");
3.var arr = [1,3,3,4];
3.标识符规范
开头必须是字母,下划线,美元。后面字符随意
4.在return break continue 换行了会怎样?还有一组
是 “++ ” “- -”
比如 return
true;
就会变成 return ; true;
5.javascript的数据类型:原始类型primitive type 和 object type
原始类型:数字,字符串,布尔值
还有两个特殊的原始值:null 和 underfined
5.对象的特征:属性的property的集合
1.global object 全局对象
2. array(带编号的值的有序集合)
3. 还有一个特殊对象 ---函数
6.全局变量的定义
不在任何函数范围内声明的变量称之为全局变量
7.javascript中的数字
1.不分整数和浮点,均用浮点数表示
2.表示范围是64位,实际上用的是32位。
8.null 和underfined理解
1.==相比是相等的。且都是假值
2.null表示是"无值的"
3.underfined 表示是" 未初始化"
4.typeof null 是object
5.typeof underfined是 underfined
6.null和underfined都不包含属性和方法
9. 如何理解String(“abc”) Number(12) Boolean() 包装对象
通过Number() 和Boolean() 构造函数创建一个临时变量,这些方法的调用均来自于临时对象。null 和undefined 没有包装对象,访问他们的属性会造成一个类型错误。
null 和 underfined 没有包装对象,字符串、数字 、布尔值有包装对象
用== 比较原始值和包装对象 是相等
用===相比较是不等的
可以用typeof相比较 就明显知道了
var s="test";
s.len=4;
var t = s.len;
//t=>underfined
分析:第二行代码创建一个临时字符串对象,并给其len属性赋值为4.随即销毁这个对象。
第三行通过原始的(没有被修改过)字符串值创建一个新字符串对象,尝试读取其len值,这个属性自然不存在,表达式结果为underfined。
总结:
存取字符串,数字或布尔值的属性是创建的临时对象称作包装对象。
字符串。数值 布尔值的属性都是只读的,不能给他们定义新属性
10.不可变的原始值和可变的对象引用值是否可以改变 ?
1.原始值是不可变的。字符串 数字 布尔值 null underfined
答:对数值 和布尔值显然如此,但是 字符串却 常会迷惑他人。以为会根据索引值改变某个字符。但其实返回的是新的字符串。
2.对象的值是可以改变的。
var arr=[1,2,3];
arr[0]=1;//修改其中的值
arr[3]=4;//新增一个属性
11、原始值和引用对象的是如何比较相等的?
原始值的比较值的比较,只有当他们值相等时才相等。
对象引用时比较是否指向同一个对象,是同一个才相等。
12.两个单独的对象是否一样?
var a=[],b=[];//两个单独的空对象
a===b; //=>false 两个单独的对象永不相等
var p={a:0,b:1},k={a:0,b:1};
p===k; //=>false 两个单独的对象永不相等
13.javascript类型转化
14.直接用String() Boolean() 和Number() 会发生什么?
当不使用new来调用这些函数是,他们会作为类型转化函数,按照上面表格进行转化。
15.对象转为原始值
1.所有对象转为布尔值都是true 见上图
2.对象转为字符串
先看是否有toString()方法。返回是原始值,转为字符串形式
如果没有就调用valueof()方法,返回是原始值,转为字符串形式
都没有,抛出一个类型错误异常。
3.对象转为数字
先看是否有valueof() 返回是原始值,转为数字形式
如果有toString() 返回是原始值,转为数字形式
否则,抛出一个类型错误异常。
16.变量作用域问题?
全局变量:拥有全局作用域,在javascript代码中的任何地方都是有定义的。
局部变量:函数体内包括函数参数
17。全局变量与局部变量优先级比较?
在函数体内,局部变量的优先级高于全局变量,即全局变量会被局部变量覆盖。
看一下代码
<script>
window.onload=function (argument) {
var scope="global";
function f(){
console.log(scope); //underfined
var scope ="hello";
console.log(scope);
}
f();
}
</script>
咋一看,以为第一行会输出global。结果却输出了underfined。这个为什么呢?
明明有个全局变量已经定义初始化了,为什么不能输出scope的值?
难道是因为下面有个局部变量名跟全局变量名重合了,导致了被覆盖了吗?
可是代码不是还没执行到var scope=“hello”;
怎么就会覆盖呢?
这个问题答案就是下面一个知识点呢?
18.函数作用域和声明提前
上面讲到局部变量的优先级高于全局变量,还有一个就是,在函数体内,不管在哪里声明了变量,该变量就会自动爬到了函数顶端,也就是说,即使你在函数底部声明变量,该变量也会自动跑到了函数的顶端处,只是还未初始化,等到执行到了定义的地方才会初始化。这个过程叫做声明提前。
<script>
window.onload=function (argument) {
var scope="global";
function f(){
console.log(scope); //underfined
var scope ="hello";
console.log(scope);
}
f();
}
</script>
这样就明白 了,原来在函数体内,也定义了一个变量scope,该变量自动提升到了函数顶端,但是未初始化,根据局部变量优先级高于全局变量,所以第一个 输出就是underfined。
19.作用域链
定义:每一段javascript代码都有与之关联的作用域链。这个作用域链式一个对象链表或者链表,这组对象中定义了这段代码“作用域”中的变量。
在一个不包含嵌套的函数体内,作用域链上有两个对象,一个是定义了函数参数和局部变量的对象,另一个是全局对象。
在javascript中最顶层代码中,作用域链有一个对象。
20.操作符
按位与 &
两个都是1才是1
按位或 |
有一个为1 就为1
按位异或
不一样才为1
按位非~
每一位都取反
左移 <<
7<<2 =28 右边补零
右移 >>
28>>2=7
无符号 >>>
左边总是填补0
21.in操作符
in 操作符希望左边是字符串或可以转为字符串,右边是对象,如果左边是右边对象的一个属性,则返回true。
22.instanceof
instanceof希望左边是一个对象,右边是标识对象的类。
23.创建对象
1.对象直接量
var p={};
2.用new 创建对象
var dt = new Date();
24.原型
每一个javascript对象(null)都会有一个原型对象相关联
可以通过 Object.prototype 获得对原型对象的引用
25.属性getter setter
var p={
get A(){return a}
set A(){a=3};
};
26.如何获得自有属性的描述
Object.getOwnPropertyDescriptor()
eg:
Object.getOwnPropertyDescriptor({},"toString")
27.数组方法
var a =[1,2,3];
1.a.join("-");//1-2-3
2.a.reverse()
3.a.sort()//没有参数按字母表排序
如何按照想要的方式进行排序呢?
如果传入的第一个参数应该在前面,那么就要返回一个小于0的数值
如果传入的第一个参数应该在后面,那么就要返回一个大于0的数
总结:
学校里正常排队,都是矮的站前面,高的站后面,矮的减去高的不就是负数嘛。
var arr=["Hdn","ant","sle","dh"];
arr.sort(function(s,t){
var a = s.toLowerCase();
var b = t.toLowerCase();
if(a>b) return 1;
if(a<b) return -1;
else
return 0;
});
console.log(arr);
// ["ant", "dh", "Hdn", "sle"]
var arr=[1,23,45,3,4];
arr.sort(function(a,b){
if(a<b) return 1;
if(a<=b ) return 0;
});
console.log(arr.join("-"));
//45-23-4-3-1
4.concat()
5.slice() 剪切包含了第一个参数,不包含了第二个参数 -1代表了数组的最后一个数
不是修改调用的数组
[start,end)
6.splice() 插入或删除元素的通用办法,返回的是删除掉的元素
1.删除
[start,num]
2.插入 分为先删除再插入,开始位置一样
[start,num,s,s)
会修改调用的数组
7.push和pop
数组当作栈来用
push数组最后添加一个或多个
pop数组后最后删除一个
8.shift 和 unshift
数组当作队列来用
shift 数组第一个删除
unshift 数组第一个添加一个或多个
9.forEach
a.forEach(function(i))
10.map
a.map(function(v,i,arr))
11.filter
a.filter(function(i))
12.some
a.some(function(x)) //返回true or false
13.every
a.every(function(x)) //返回布尔值
14.reduce
15.reduceof
16.indexof
17.lastIndexof
18.Array.isArray()
29.函数
如果函数挂载到一个对象上,作为一个对象的属性,就称它为对象的方法。当通过对象的方法调用这个函数时,该对象就是此次调用的上下文(context)。也就是该函数的this的值。
30.callee
指代当前正在执行的函数
31.caller
非标准的,指代当前正在调用的函数的函数,可以访问调用栈
32.arguments
在函数体内,arguments是指向实参对象的引用,实参对象是类数组对象,
本文深入讲解JavaScript的基础知识,包括变量作用域、数据类型、数组与对象的特性、运算符及函数使用技巧等内容,并通过实例帮助读者更好地理解这些概念。
1506

被折叠的 条评论
为什么被折叠?



