闲谈JS

 2023-09-15 阅读 30 评论 0

摘要:1、document.write和innerHTML的区别 document.write是直接写入到页面的内容流,如果在写之前没有调用document.open, 浏览器会自动调用open。每次写完关闭之后重新调用该函数,会导致页面被重写。 innerHTML则是DOM页面元素的一个属性,代表该元素的html内

1、document.write和innerHTML的区别

document.write是直接写入到页面的内容流,如果在写之前没有调用document.open, 浏览器会自动调用open。每次写完关闭之后重新调用该函数,会导致页面被重写。
innerHTML则是DOM页面元素的一个属性,代表该元素的html内容。你可以精确到某一个具体的元素来进行更改。如果想修改document的内容,则需要修改document.documentElement.innerElement。
innerHTML将内容写入某个DOM节点,不会导致页面全部重绘
 
innerHTML很多情况下都优于document.write,其原因在于其允许更精确的控制要刷新页面的那一个部分。

2、javaScript中的alert()和window.alert()有区别

没有区别,你就认为alert = window.alert没什么区别,如果有人觉得有区别,那就来解释一下所有以window.开始的东西,都可以直接把window省略,只是有些变成软件在你写了window.的时候会自动的出现window的方法,所以如果你记得住完全没必要写window。比如location.href = window.location.href

3、JS中创建对象及访问

<body><p id="demo"></p><script>
var person = {firstName: "John",lastName : "Doe",id : 5566
};
document.getElementById("demo").innerHTML = person["firstName"] + " " + person["lastName"];
//document.getElementById("demo").innerHTML = person.firstName + " " + person.lastName;//二选一
//结果  John Doe
</script></body>

对象方法作为一个函数定义存储在对象属性中。

<body><p id="demo"></p>
<script>
var person = {firstName: "John",lastName : "Doe",id : 5566,fullName : function() {return this.firstName + " " + this.lastName;}
};
document.getElementById("demo").innerHTML = person.fullName();//结果John Doe
</script></body>

对象方法是一个函数定义,并作为一个属性值存储。

<body><p>创建和使用对象方法。</p>
<p>对象方法是一个函数定义,并作为一个属性值存储。</p>
<p id="demo1"></p>
<p id="demo2"></p>
<script>
var person = {firstName: "John",lastName : "Doe",id : 5566,fullName : function() {return this.firstName + " " + this.lastName;}
};
document.getElementById("demo1").innerHTML = "不加括号输出函数表达式:"  + person.fullName;
document.getElementById("demo2").innerHTML = "加括号输出函数执行结果:"  +  person.fullName();
</script></body>

4、向未声明的 JavaScript 变量分配值

javascript悟道、如果您把值赋给尚未声明的变量,该变量将被自动作为 window 的一个属性。

这条语句:carname="Volvo";

将声明 window 的一个属性 carname。

非严格模式下给未声明变量赋值创建的全局变量,是全局对象的可配置属性,可以删除。

var var1 = 1; // 不可配置全局属性
var2 = 2; // 没有使用 var 声明,可配置全局属性console.log(this.var1); // 1
console.log(window.var1); // 1delete var1; // false 无法删除
console.log(var1); //1delete var2; 
console.log(delete var2); // true
console.log(var2); // 已经删除 报错变量未定义

5、变量作用域

 

// 此处不能调用 carName 变量
function myFunction() {var carName = "Volvo";// 函数内可调用 carName 变量
}
var carName = " Volvo";// 此处可调用 carName 变量
function myFunction() {// 函数内可调用 carName 变量
}
// 此处可调用 carName 变量function myFunction() {carName = "Volvo";// 此处可调用 carName 变量
}

6、事件响应

事件描述
onchangeHTML 元素改变
onclick用户点击 HTML 元素
onmouseover用户在一个HTML元素上移动鼠标
onmouseout用户从一个HTML元素上移开鼠标
onkeydown用户按下键盘按键
onload浏览器已完成页面的加载

7、变量提升

JavaScript 中,函数及变量的声明都将被提升到函数的最顶部。

js调用js、JavaScript 中,变量可以在使用后声明,也就是变量可以先使用再声明。

x = 5; // 变量 x 设置为 5elem = document.getElementById("demo"); // 查找元素 
elem.innerHTML = x;                     // 在元素中显示 xvar x; // 声明 x

JavaScript 只有声明的变量会提升,初始化的不会。

var x = 5; // 初始化 xelem = document.getElementById("demo"); // 查找元素 
elem.innerHTML = x + " " + y;           // 显示 x 为 5 和 y 为undefinedvar y = 7; // 初始化 y

8、Undefined 和 Null

在 JavaScript 中, null 用于对象, undefined 用于变量,属性和方法。

对象只有被定义才有可能为 null,否则为 undefined。

如果我们想测试对象是否存在,在对象还没定义时将会抛出一个错误。

错误的使用方式:

if (myObj !== null && typeof myObj !== "undefined") 

不学js直接学jquery、正确的方式是我们需要先使用 typeof 来检测对象是否已定义:

if (typeof myObj !== "undefined" && myObj !== null) 

9、程序块作用域

在每个代码块中 JavaScript 不会创建一个新的作用域,一般各个代码块的作用域都是全局的。

以下代码的的变量 i 返回 10,而不是 undefined:

for (var i = 0; i < 10; i++) {// some code
}
return i;

10、分号的可选性

JavaScript 中,分号是可选的,在缺少了分号就无法正确解析代码的时候,JavaScript 才会填补分号。

var a
a
=
3
console.log(a)

JavaScript 将其解析为:

var a;a=3;console.log(a);

语句的分隔规则会导致一些意想不到的情形,这段代码写成了两行,看起来是两条独立的语句:

var y=x+f
(a+b).toString()

js静态方法和实例方法?但第二行的圆括号却和第一行的f组成了一个函数调用,JavaScript会把这段代码看做:

var y=x+f(a+b).toString();

而这段代码的本意并不是这样。为了能让上述代码解析为两条不同的语句,必须手动填写行尾的显式分号。

版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://hbdhgg.com/1/57449.html

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 匯編語言學習筆記 Inc. 保留所有权利。

底部版权信息